线段树全WA
查看原帖
线段树全WA
553529
Cyril66666楼主2021/11/6 17:38

样例过了,改来改去提交多遍总是全WA,求助!

代码:

#include <bits/stdc++.h>
using namespace std;

const int MAXN=200001;
const long long INF=0x3f3f3f3f;

long long seg[MAXN<<2];

void pushup(int rt){
    seg[rt]=max(seg[rt<<1],seg[rt<<1|1]);
}

void update(long long idx,long long val,int rt,int l,int r){
    if(l==r){
        seg[rt]=val;
        return;
    }
    int m=(l+r)>>1;
    if(idx<=m)update(idx,val,rt<<1,l,m);
    else update(idx,val,rt<<1|1,m+1,r);
    pushup(rt);
}

long long query(long long idxl,long long idxr,int rt,int l,int r){
    if(l>=idxl&&r<=idxr)
        return seg[rt];
    if(l>idxr||r<idxl)
        return -INF;
    int m=(l+r)>>1;
    return max(query(idxl,idxr,rt<<1,l,m),query(idxl,idxr,rt<<1|1,m+1,r));
}

int main(){
    long long m,n,d,len=0,t=0;
    char c;
    scanf("%lld%lld",&m,&d);
    for(int i=0;i<MAXN<<2;i++)
        seg[i]=-INF;
    for(int i=0;i<m;i++){
        scanf("%*c%c%lld",&c,&n);
        if(c=='Q')
            if(!n)printf("0\n");
            else{
                t=query(len-n+1,len,1,1,m);
                printf("%lld\n",t);
            }
        else if(c=='A')
            update(++len,(n+t)%d,1,1,m);
    }
    return 0;
}
2021/11/6 17:38
加载中...