Description 现在请求你维护一个数列,要求提供以下两种操作:1、 查询操作。语法:Q L 功能:查询当前数列中末尾L 个数中的最大的数,并输出这个数的值。限制:L不超过当前数列的长度。2、 插入操作。语法:A n 功能:将n加 上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取 模,将所得答案插入到数列的末尾。限制:n是非负整数并且在长整范围内。注意:初始时数列是空的,没有一个 数。
【题目分析】 直接暴力水过,%hzwer
【代码】(抄的,懒得写了)
int m,d,a[
200001],t,max[
200001],l=
0,p;
char
q[1];
int main()
{
scanf(
"%d%d", &
m, &d);
while (
m--)
{
scanf(
"%s%d",
q,&p);
if(
q[0]==
'A')
{
a[++t]=(l+p)
%d;
for(
int i=t;i;i--)
if(max[i]<a[t])max[i]=a[t];
else break;
}
else printf(
"%d\n",l=max[t-p+
1]);
}
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-1296130.html