90pts S.O.S
查看原帖
90pts S.O.S
964427
S_ALPHA楼主2024/3/27 16:49
#include<bits/stdc++.h>
using namespace std;
const int maxn=2e7;
const long long nnnnn=2e18;
char c;
long long m,d,x,Max=-nnnnn,flag,t=0,top=0,tail=0,answ;
long long num[maxn],ans[maxn];
int main() {
	scanf("%lld%lld",&m,&d);
	for(int i=1;i<=m;i++){
		cin>>c>>x;
		if(c=='A'){
			x+=t;
			x%=d;
			top++;
			if(x>Max) {	
				num[top]=x;
				Max=x;
				tail=top;
				ans[top]=Max;
			}
			else if(x>num[top]&&x<Max) {
				num[top]=x;
				flag=top;
				while(ans[flag]<=x) {
					ans[flag]=x;
					flag--;
				} 
			}
			else if(x<Max&&x<ans[top]) {
				ans[top]=x;
				num[top]=x;
			}
		}
		else if(c=='Q'){
			long long place=top-x+1;
			if(place<=tail) {
				answ=ans[tail];
			}
			else {
				answ=ans[place];
			}
			cout<<answ<<endl;
			t=answ;
		}
	}
	return 0;
}

90分,暴力。
有没有同志能够帮忙看一下为什么最后一个点过不了: )

2024/3/27 16:49
加载中...