为何RE
查看原帖
为何RE
1385991
tiangongjiangjun36楼主2024/11/25 16:37
#include<bits/stdc++.h>
using namespace std;
const int N=2*1e5;
int lc(int x){return x<<1;}
int rc(int x){return x<<1|1;}
struct node{
	int val,l,r;
} tr[N<<2];
void pushup(int x){
	tr[x].val=max(tr[lc(x)].val,tr[rc(x)].val);
	return ;
}
int n,m,a[N],x,y;
char op;
void build(int x,int l,int r){
	tr[x].l=lc(x);tr[x].r=rc(x);
	if(l==r){
		tr[x].val=a[l];
		return ;
	}
	int mid=(lc(x)+rc(x))>>1;
	build(lc(x),l,mid);
	build(rc(x),mid+1,r);
	pushup(x);
}
int query(int x,int l,int r){
	if(l<=tr[x].l and tr[x].r<=r){
		return tr[x].val;
	}
	int mid=(l+r)>>1,sum=0;
	if(tr[x].l<=mid) sum+=query(tr[x].l,l,r);
	if(mid<=tr[x].r) sum+=query(tr[x].r,l,r);
	return sum;
}
void update(int x,int f,int k){
	if(tr[x].l==f and tr[x].r==f){
		tr[x].val+=k;
		return ;
	}
	int mid=(tr[x].l+tr[x].r)>>1;
	if(f<=mid) update(tr[x].l,f,k);
	if(mid<f) update(tr[x].r,f,k);
	pushup(x);
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	build(1,1,n);
	for(int i=1;i<=m;i++){
		cin>>op>>x>>y;
		if(op=='Q'){
			cout<<query(1,x,y)<<"\n";	
		}else{
			if(a[x]<=y){
				update(1,x,y-a[x]);
				a[x]=y;
			}	
		}
	}
	return 0;
}
2024/11/25 16:37
加载中...