欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1549:最大数

程序员文章站 2024-03-08 08:27:28
...

1549:最大数 1549:最大数

const int limit=2e5;
const int N=2e5+5;
 
    int n,m,t;
    int i,j,k;
    int a[N<<2];

void build(int l,int r,int id)
{
    if(l==r) return ;
    a[id]=-inf;
    int mid=l+1>>1;
    build(l,mid,id<<1);
    build(mid+1,r,id<<1|1);
}
int query(int l,int r,int ql,int qr,int id)
{
    if(l==ql && r==qr) return a[id];
    int mid=l+r>>1;
    if(qr<=mid) return query(l,mid,ql,qr,id<<1);
    else if(ql>mid) return query(mid+1,r,ql,qr,id<<1|1);
    else return max(query(l,mid,ql,mid,id<<1),query(mid+1,r,mid+1,qr,id<<1|1));
}
void update(int l,int r,int pos,int val,int id)
{
    if(l==r){ a[id]=val; return ;}
    int mid=l+r>>1;
    if(pos<=mid) update(l,mid,pos,val,id<<1);
    else update(mid+1,r,pos,val,id<<1|1);
    a[id]=max(a[id<<1],a[id<<1|1]);
    return ;
}

int main()
{
    //IOS;
    while(sdd(n,m)==2){
        int len=0;
        int x,last=0;
        for(i=1;i<=n;i++){
            char ch[5];
            ss(ch); sd(x);
            if(ch[0]=='A'){
                x=(last+x)%m;
                update(1,limit,++len,x,1);
            }
            else{
                last=query(1,limit,len-x+1,len,1);
                pd(last);
            }
        }
    }
    return 0;
    //PAUSE;
}