记录编号 269318 评测结果 AAAAAAAAAA
题目名称 [JSOI 2008] 最大数 最终得分 100
用户昵称 GravatarFoolMike 是否通过 通过
代码语言 C++ 运行时间 0.456 s
提交时间 2016-06-13 14:25:35 内存使用 1.82 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
using namespace std;

int i,j,m,r,last;
long long part[510],q[200010],ans,d,n;
int p(int x){return (x+499)/500;}

int main()
{
	freopen("bzoj_1012.in","r",stdin);
	freopen("bzoj_1012.out","w",stdout);
	scanf("%d%lld",&m,&d);
	while (m--){
		char s=1;
		while (s<'A'||s>'Z') s=getchar();
		scanf("%lld",&n);
		if (s=='A'){
			q[++r]=(n+ans)%d;
			i=p(r);part[i]=max(part[i],q[r]);
		}
		if (s=='Q'){
			last=r-n+1;ans=q[r];
			for (i=p(r)*500;i-499>=last;i-=500) ans=max(ans,part[i/500]);
			for (;i>=last;i--) ans=max(ans,q[i]);
			printf("%lld\n",ans);
		}
	}
	return 0;
}