全MLE求助
查看原帖
全MLE求助
615983
Leo_Dou楼主2024/1/28 19:48
#include<iostream>
using namespace std;
typedef long long ll;
int n,m,d,t,a[200005],ma[800005];
ll lc(ll p){return p<<1;}
ll rc(ll p){return p<<1|1;}
void pushUp(ll p){
	ma[p]=max(ma[lc(p)],ma[rc(p)]);
}
void update(ll p,ll l,ll r,ll ql,ll qr,ll b){
	if(ql<=l&&r<=qr){
		a[l]=b;
		ma[p]=a[l];
		return ;
	}
	ll mid=(l+r)/2;
	if(ql<=mid) update(lc(p),l,mid,ql,qr,b);
	if(qr>mid) update(rc(p),mid+1,r,ql,qr,b);
	pushUp(p);
}
ll query(ll p,ll l,ll r,ll ql,ll qr){
	if(l>=ql&&r<=qr){
		return ma[p];
	}
	ll mid=(l+r)/2,ans=0;
	if(ql<=mid) ans=query(lc(p),l,mid,ql,qr);
	if(qr>mid) ans=max(ans,query(rc(p),mid+1,r,ql,qr));
	return ans;
}
int main(){
	cin>>m>>d;
	n=0;
	while(m--){
		char op;
		ll x;
		cin>>op>>x;
		if(op=='A'){
			n++;
			update(1,1,m,n,n,(x+t)%d);
		}else{
			t=query(1,1,m,n-x+1,n);
			printf("%lld\n",t);
		}
	}
	return 0;
}

2024/1/28 19:48
加载中...