为什么第五个点会T
#include<bits/stdc++.h>
#define _for(i,a,b) for(int i=(a);i<(b);i++)
#define mp make_pair
#define ff first
#define ss second
#define pb push_back
#define pf push_front
#define pob pop_back
#define pof pop_front
#define pii pair<int,int>
#define pq priority_queue
#define ll long long
#define set(a,n) memset(a,n,sizeof(a))
#define MAX(a,b) ((a)>(b)?(a):(b))
#define MIN(a,b) ((a)<(b)?(a):(b))
#define tra(a,it) for(it=a.begin();it!=a.end();it++)
#define ABS(a) ((a)>0?(a):-(a))
#define isnum(c) (c>='0'&&c<='9')
#define cpy(a,b) memcpy(a,b,sizeof(a))
#define updata(a,b) (a)=MAX((a),(b))
using namespace std;
const int MAXN=(200010)<<1,INF=0x7ffffff;
int ma[MAXN],lson[MAXN],rson[MAXN],cnt=1,a[MAXN],N,M;
void read(int &a)
{
a=0;
bool flag=0;
char c=0;
while(!isnum(c))
{
flag=(c=='-');
c=getchar();
}
while(isnum(c))
{
a=(a<<3)+(a<<1)+c-'0';
c=getchar();
}
a=flag?-a:a;
return;
}
void pushup(int u)
{
ma[u]=MAX(ma[lson[u]],ma[rson[u]]);
return;
}
void build(int u,int l,int r)
{
if(l==r)
{
ma[u]=a[l];
return;
}
int mid=(l+r)>>1;
build(lson[u]=cnt++,l,mid);
build(rson[u]=cnt++,mid+1,r);
pushup(u);
return;
}
void change(int u,int l,int r,int tar,int d)
{
if(l==r)
{
updata(ma[u],d);
return;
}
int mid=(l+r)>>1;
if(tar<=mid)
change(lson[u],l,mid,tar,d);
else
change(rson[u],mid+1,r,tar,d);
pushup(u);
return;
}
int query(int u,int l,int r,int ql,int qr)
{
if(ql<=l&&r<=qr)
return ma[u];
int mid=(l+r)>>1,ret=0;
if(mid>=ql)
updata(ret,query(lson[u],l,mid,ql,qr));
if(mid<qr)
updata(ret,query(rson[u],mid+1,r,ql,qr));
return ret;
}
void init()
{
return;
}
void input()
{
cin>>N>>M;
_for(i,1,N+1)
cin>>a[i];
return;
}
void solve()
{
char c;
int a,b,ans;
build(0,1,N);
_for(i,0,M)
{
// cout<<query(0,1,N,3,4)<<endl;
cin>>c>>a>>b;
if(c=='Q')
{
ans=query(0,1,N,a,b);
printf("%d\n",ans);
}
else
change(0,1,N,a,b);
}
return;
}
void print()
{
return;
}
int main()
{
// freopen("P1531_5.in","r",stdin);
// freopen("1.txt","w",stdout);
init();
input();
solve();
print();
return 0;
}