记录编号 462133 评测结果 AAAAAAAAAA
题目名称 [JSOI 2008] 最大数 最终得分 100
用户昵称 Gravatar~玖湫~ 是否通过 通过
代码语言 C++ 运行时间 0.420 s
提交时间 2017-10-21 11:10:49 内存使用 3.36 MiB
显示代码纯文本
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
#define int long long
const int M=200010;
int n,mod,tail,last,num;
int deq[M],id[M];
inline int read(){
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();}
	return x*f;
} 
inline void add(int val,int i){
	while(tail&&deq[tail]<=val) --tail;
	deq[++tail]=val;id[tail]=i;
}
inline int erfen(int x){
	int l=1,r=tail,ans;
	while(l<=r){
		int mid=l+r>>1;
		if(id[mid]>=x) {ans=mid;r=mid-1;}
		else l=mid+1;
	}return deq[ans];
}
signed main(){
	freopen("bzoj_1012.in","r",stdin);
	freopen("bzoj_1012.out","w",stdout);
	n=read();mod=read();char s[2];int xx;
	for(int T=1;T<=n;++T){
		scanf("%s",s);xx=read();
		if(s[0]=='A'){
			xx=(xx%mod+last)%mod;
			add(xx,++num);
			continue;
		}printf("%lld\n",last=erfen(num-xx+1));
	}return 0;
}
/*
4 100
A 96
Q 1
A 97
Q 1
*/