萌新刚学OI一周线段树求条为啥MLE
查看原帖
萌新刚学OI一周线段树求条为啥MLE
1000298
Vsinger_洛天依楼主2023/10/25 11:18
#include<bits/stdc++.h>
#define mid ((l+r)/2) 
#define inf 0x66ccff0712
using namespace std;
inline long long read(){
    long long f=1,x=0;char ch;
    while(ch<'0'||ch>'9'){ch=getchar();if(ch=='-')f=-1;};
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();};
    return f*x;
}
long long tot[0x66ccf];
long long A[0x66cf],m,LuoShuiTianYi,maxm;
void add(int a,int val,int q,int l,int r){
    if(l==r){
        tot[q]=val;
        return;
    }
    if(mid>=a) add(a,val,q*2,l,mid);
    if(mid<a) add(a,val,q*2+1,mid+1,r);
    (tot[q]=max(tot[q*2],tot[q*2+1]))%=m;
}
long long ask(int lc,int rc,int q,int l,int r){
    if(lc<=l&&rc>=r) return tot[q];
    long long maxa=-inf,maxb=-inf;
    if(mid>=l) 
        maxa=ask(lc,rc,q*2,l,mid);
    if(mid<r) 
        maxb=ask(lc,rc,q*2+1,mid+1,r);
    return (max(maxa,maxb))%m;
}
int main(){
    long long a=read();
    m=read();
    for(int i=1;i<=a;i++){
        char ans=getchar();
        long long qwq=read();
        if(ans=='A'){
            add(LuoShuiTianYi+1,qwq+maxm,1,1,a);
            LuoShuiTianYi++;
        }
        else{
            cout<<ask(LuoShuiTianYi-qwq+1,LuoShuiTianYi,1,1,a)<<"\n";
        }
    }

}

MLE记录

2023/10/25 11:18
加载中...