全wa求条
查看原帖
全wa求条
952041
buerbute楼主2024/12/15 11:00
#include <bits/stdc++.h>
using namespace std;
long long m,d,maxnum,cnt;
long long A[2000001];
long long tree[2000001];
//void dfs(int p,int l,int r){
//	if(l==r){
//		tree[p]=A[l];
//		return;
//	}
//	dfs(p*2,l,(r+l)/2);
//	dfs(p*2+1,(r+l)/2+1,r);
//	tree[p]=max(tree[p*2],tree[p*2+1]);
//}
void update(int p,int l,int r,int x,int y,int q){
//	cout<<l<<" "<<r<<" "<<x<<" "<<y<<endl;
	if(r<x||l>y)return;
	else if(x<=l&&y>=r){
		tree[p]+=q;
		tree[p]%=d;
	}
	else{
		int mid=(l+r)/2;
		update(p*2,l,mid,x,y,q);
		update(p*2+1,mid+1,r,x,y,q);
		tree[p]=max(tree[p*2],tree[p*2+1])%d;
	}
}
long long find(int p,int l,int r,int x,int y){
	if(r<x||l>y)return -1e9;
	else if(x<=l&&y>=r){
		return tree[p]%d;
	}
	else{
		int mid=(l+r)/2;
		return max(find(p*2,l,mid,x,y),find(p*2+1,mid+1,r,x,y))%d;
	}
}
int main(){
	cin>>m>>d;
	cnt=0;
	maxnum=0;
	for(int i=1;i<=40000;i++){
		tree[i]=-1e9;
	}
	for(int i=1;i<=m;i++){
		char tmp;
		int tmp2;
		cin>>tmp;
		if(tmp=='Q'){
			cin>>tmp2;
			maxnum=find(1,1,40000,cnt-tmp2+1,cnt);
			cout<<maxnum%d<<endl;
		}else{
			cin>>tmp2;
			++cnt;
			update(1,1,40000,cnt,cnt,maxnum+tmp2);
			
		}
	}
}
2024/12/15 11:00
加载中...