WA 0 求助
查看原帖
WA 0 求助
817524
CR400BFAZ5254楼主2024/11/7 20:24

#include<bits/stdc++.h>
#define lson rt<<1
#define rson ((rt<<1)|1)
#define mid ((l+r)>>1)
#define MAXN 200010
using namespace std;
int n,q;
int a[MAXN];
int seg[MAXN<<2];
void update(int rt){
    seg[rt]=max(seg[lson],seg[rson]);
}
void build(int l,int r,int rt){
    if(l==r){
        seg[rt]=a[l];return ;
    }
    build(l,mid,lson);
    build(mid+1,r,rson);
    update(rt);
}
void modify(int l,int r,int rt,int xb,int x){
    if(l==r){
        if(seg[rt]<x) seg[rt]=x;
        return ;
    }
    if(xb<=mid) modify(l,mid,lson,xb,x);
    else modify(mid+1,r,rson,xb,x);
    update(rt);
}
int query(int l,int r,int rt,int lp,int rp){
    if(lp<=l && r<=rp){
        return seg[rt];
    }
    int ans=-1e9-7;
    if(lp<=mid) ans=max(ans,query(l,mid,lson,lp,rp));
    else if(rp>mid) ans=max(ans,query(mid+1,r,rson,lp,rp));
    return ans;
}
int main(){
    cin >> n >> q;
    for(int i=1;i<=n;i++) cin >> a[i];
    build(1,n,1);
    while(q--){
        int l,r;
        char op;
        cin >> op >> l >> r;
        if(op=='Q') cout << query(1,n,1,l,r) << endl;
        else modify(1,n,1,l,r);
    }

    return 0;
}
2024/11/7 20:24
加载中...