BZOJ 1012 [JSOI2008]最大数maxnumber

BZOJ 1012

题解:用单调栈来维护第L大的数这个关系

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 const int N=2e5+5;
 5 int a[N],data[N];
 6 int main(){
 7     int m,d;
 8     scanf("%d %d",&m,&d);
 9     char str[2];
10     int x,t=0,len=0,top=0;
11     for(int i=0;i<m;i++){
12         scanf("%s%d",str,&x);
13         if(str[0]=='A'){
14             x=(x+t)%d;
15             data[++len]=x;
16             while(top&&data[a[top]]<=x)top--;
17             a[++top]=len;
18         }
19         else{
20             int index=lower_bound(a+1,a+1+top,len-x+1)-a;
21             t=data[a[index]];
22             printf("%d\n",t);
23         }
24     }
25     
26     return 0;
27 }

 

posted @ 2018-02-02 22:31  采蘑菇的小西佬  阅读(111)  评论(0编辑  收藏  举报