线段树 求助hack
查看原帖
线段树 求助hack
858608
BreadCakeCheese楼主2024/7/20 20:01
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define ls rt<<1
#define rs rt<<1|1 
const int N=2e5+10;
const LL INF=(-1<<62);
int cnt=0;
long long a[N],tree[N*4];
LL MAX(LL x,LL y){
	if(y<=x) return x;
	return y;
}
void insert(int rt,int l,int r,int v,int x){
	if(l==r){
		tree[rt]=v;
		return;
	}
	int mid=l+r>>1;
	if(x<=mid) insert(ls,l,mid,v,x);
	else insert(rs,mid+1,r,v,x);
	tree[rt]=MAX(tree[ls],tree[rs]);
}
LL query(int rt,int l,int r,int L,int R){
	if(L<=l&&r<=R) return tree[rt]; 
	int mid=l+r>>1;
	LL res=INF;
	if(L<=mid) res=MAX(res,query(ls,l,mid,L,R));
	if(R>mid) res=MAX(res,query(rs,mid+1,r,L,R));
	return res;
}
int main(){
	int m,d,t=0,n;
	char op;
	cin>>m>>d;
	for(int i=1;i<N;i++) tree[i]=INF;
	for(int i=1;i<=m;i++){
		cin>>op>>n;
		if(op=='A'){
			cnt++; 
			insert(1,1,m,(t+n)%d,cnt);
		}else{
			t=query(1,1,m,cnt-n+1,cnt);
			cout<<t<<endl;
		}
	}
	return 0;
}

WA on hack求助

2024/7/20 20:01
加载中...