求助最后一个点wa
查看原帖
求助最后一个点wa
752094
MornHus楼主2023/2/20 13:32
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf (1<<63)
inline ll read(){
	ll x=0;
	char c=getchar();
	while(c>'9'||c<'0'){
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		x=(x<<1)+(x<<3)+(c^'0');
		c=getchar();
	}
	return x;
} 
char op;
ll y;
ll td;
int tot;
//ll a[200001];
ll t[200001<<2];
int m,d;
void pushup(int k){
	t[k]=max(t[k<<1],t[k<<1|1]);
}
void update(int k,int l ,int r,ll val,int x){
	if(l==r){
		t[k]=val;
		t[k]%=d;
		return ;
	}else{
		int mid=((l+r)>>1);
		if(x<=mid){
			update(k<<1,l,mid,val,x);
		}else{
			update(k<<1|1,mid+1,r,val,x);
		}
		pushup(k); 
	}
}
ll query(int k,int l,int r,int L,int R){
	if(L<=l&&r<=R){
		return t[k];
	}else{
		ll res=-inf;
		int mid=((l+r)>>1);
		if(L<=mid){
			res=max(res,query(k<<1,l,mid,L,R));
		}
		if(R>mid){
			res=max(res,query(k<<1|1,mid+1,r,L,R));
		}
		return res;
	}
}
int main(){
	m=read();
	d=read();
	for(int i=1;i<=m;i++){
		cin>>op;
		y=read();
		if(op=='A'){
			update(1,1,m,(y+td)%d,++tot);
		}else{
			if(y==0)td=0;
			else td=query(1,1,m,tot-y+1,tot)%d;
			printf("%lld\n",td);
		}
	}
	return 0;
} 
2023/2/20 13:32
加载中...