输完a数组就结束了,根本输不了后面m行QWQ
by Lyy0518 @ 2023-10-22 22:15:13
重发一遍
```cpp
#include<bits/stdc++.h>
using namespace std;
const int N=2*(int)1e5+1;
int tree[4*N];
int n,m,a[N];
int ls(int p) {return p*2; }
int rs(int p) {return p*2+1; }
void push_up(int p){
tree[p]=max(tree[ls(p)],tree[rs(p)]);
}
void build(int p,int pl,int pr){
if(pl==pr){
tree[p]=a[pl];
return;
}
int mid=(pl+pr)>>1;
build(ls(p),pl,mid);
build(rs(p),mid+1,pr);
push_up(p);
}
int query(int L,int R,int p,int pl,int pr){
if(L<=pl && R>=pr) return tree[p];
int mid=(pl+pr)>>1,res=(1<<30)*-1;
if(L<=mid) res=max(res,query(L,R,ls(p),pl,mid));
if(R>=mid) res=max(res,query(L,R,rs(p),mid+1,pr));
return res;
}
void add(int p,int pl,int pr,int v,int b){
if(pl==pr){
if(tree[p]<b) tree[p]=b;
return;
}
int mid=(pl+pr)>>1;
if(v<=mid) add(ls(p),pl,mid,v,b);
else add(rs(p),mid+1,pr,v,b);
push_up(p);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
build(1,1,n);
for(int i=1;i<=m;i++){
char c;int x,y;
cin>>c>>x>>y;
if(c=='Q'){
printf("%d",query(x,y,1,1,n));
}else
add(1,1,n,x,y);
}
}
```
by Lyy0518 @ 2023-10-23 20:53:42
您 m 根本没输入啊@[Lyy0518](/user/1143983)
by Little_Fox_Fairy @ 2023-10-27 17:56:54
@[Little_Fox_Fairy](/user/826774) 改了样例1输到第三个Q 3 4突然结束了
by Lyy0518 @ 2023-10-27 18:59:10
[QAQ](https://cn.bing.com/)
by Lyy0518 @ 2023-11-05 15:46:12