您的位置:首页 > Web前端 > JavaScript

BZOJ1012 [JSOI2008]最大数maxnumber

2018-01-10 17:19 483 查看

单调栈存储最大值位置。

由于单调下降所以查找第一个大于当前查询位置的数即可。

#include<bits/stdc++.h>
using namespace std;
int cnt,a[200005],h[200005],top,ans;
int main()
{
int m,d;char s[3];
scanf("%d%d",&m,&d);
for(int i=1;i<=m;++i)
{
scanf("%s",s);
if(s[0]=='Q')
{
int l;scanf("%d",&l);
printf("%d\n",ans=a[h[lower_bound(h+1,h+1+top,cnt-l+1)-h]]);
}
else
{
cnt++;
scanf("%d",&a[cnt]);
a[cnt]+=ans;a[cnt]%=d;
while(top&&a[cnt]>a[h[top]])top--;
h[++top]=cnt;
}
}
return 0;
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: