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;
}

 

 

猜你喜欢

转载自blog.csdn.net/C_Dreamy/article/details/107752031