为什么50分?
#include<bits/stdc++.h>
using namespace std;
int n,m,a[200001],q,p;
string k;
struct segtree_noet{
int ved;
}segtree[200001*4];
void gz(int l,int r,int rt){
if(l==r){
segtree[rt].ved=a[l];
return;
}
int m=(l+r)/2;
gz(l,m,rt*2);
gz(m+1,r,rt*2+1);
segtree[rt].ved=max(segtree[rt*2].ved,segtree[rt*2+1].ved);
}
void gx(int L,int c,int l,int r,int rt){
if(l==r){
segtree[rt].ved=c;
return;
}
int m=(l+r)/2;
if(L<=m) gx(L,c,l,m,rt*2);
else gx(L,c,m+1,r,rt*2+1);
segtree[rt].ved=max(segtree[rt*2].ved,segtree[rt*2+1].ved);
}
int dow(int L,int R,int l,int r,int rt){
if(r<=R&&L<=l) return segtree[rt].ved;
if(L>r||R<l) return 0;
int m=(l+r)/2,ma=-10000;
ma=max(dow(L,R,l,m,rt*2),dow(L,R,m+1,r,rt*2+1));
return ma;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
gz(1,n,1);
for(int i=1;i<=m;i++){
cin>>k>>q>>p;
if(k=="Q") cout<<dow(q,p,1,n,1)<<"\n";
else gx(q,p,1,n,1);
}
return 0;
}
求帮忙!!