记录编号 426659 评测结果 AAAAAAAAAA
题目名称 [JSOI 2008] 最大数 最终得分 100
用户昵称 Gravatarliuyu 是否通过 通过
代码语言 C++ 运行时间 2.105 s
提交时间 2017-07-18 15:42:50 内存使用 1.84 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
stack<int>sta;
stack<int>sta1;
long long m,d,t=0,n,l=1,s[200003];
char a;
int main(){
	freopen("bzoj_1012.in","r",stdin);
	freopen("bzoj_1012.out","w",stdout);
	scanf("%lld%lld",&m,&d);
	while(m--){
		//scanf("%c%d",&a,&n);
		cin>>a>>n;
		if(a=='A'){
			n+=t;
			n%=d;
			s[l]=n;
			while(!sta.empty()&&s[l]>=s[sta.top()]){sta.pop();}
			sta.push(l);
			l++;
		}
		if(a=='Q'){
			int now;
			while(!sta.empty()&&sta.top()+n>l-1){
				now=sta.top();
				sta.pop();
				sta1.push(now);
			}
			if(!sta1.empty())t=s[sta1.top()];
			printf("%lld\n",t);
			while(!sta1.empty()){
				now=sta1.top();
				sta1.pop();
				sta.push(now);
			}
		}
	}
	return 0;
}