这里写链接内容
线段树模板
字符串是一个很诡异的问题。。。。
#include<cstdio>
#include<iostream>
#include<string>
#define q 200000
using namespace std;
int a[q+5],s[q<<2+5];
void bu(int o,int l,int r)//建树
{if(l==r){s[o]=a[r];} else{int mid=l+((r-l)>>1);bu(o<<1,l,mid);bu((o<<1)|1,mid+1,r);s[o]=max(s[o<<1],s[(o<<1)|1]);}}
void up(int o,int l,int r,int in,int ans)//修改
{if(l==r){s[o]=ans;return;}int mid=l+((r-l)>>1);if(in<=mid)up(o<<1,l,mid,in,ans);elseup((o<<1)|1,mid+1,r,in,ans);s[o]=max(s[o<<1],s[(o<<1)|1]);}
int qu(int o,int l,int r,int ql,int qr)//查询输出
{if(r<ql||l>qr) return -9999;if(ql<=l&&qr>=r){return s[o];}int mid=l+((r-l)>>1);return max(qu(o<<1,l,mid,ql,qr),qu((o<<1)|1,mid+1,r,ql,qr));
}int main(){//freopen("线段树.in","r",stdin);//freopen("线段树.out","w",stdout);int n;int m;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%d",&a[i]);//getchar();bu(1,1,n+1);for(int i=1;i<=m;i++) {//char b;string b;int c,d;//b=getchar();cin>>b;scanf("%d%d",&c,&d);// getchar();if(b=="Q") {printf("%d\n",qu(1,1,n+1,c,d)); }if(b=="U") {if(a[c]<d){a[c]=d;up(1,1,n+1,c,d);}}}return 0;}