会写java了咩哈哈哈
import java.util.Scanner;
public class Main {
static int t[] = new int[201000<<2];
static int a[] = new int[201000];
static int n,m;
static int max(int a,int b) { return a>b ? a : b; }
static void up(int rt) {
t[rt] = max(t[rt<<1],t[rt<<1|1]);
}
static void build(int l,int r,int rt) {
if (l==r) {
t[rt] = a[l]; return ;
}
int mid = l+r>>1;
build(l,mid,rt<<1);
build(mid+1,r,rt<<1|1);
up(rt);
}
static void modify(int p,int v,int l,int r,int rt) {
if (l==r) {
t[rt] = v; return ;
}
int mid = l+r>>1;
if (p<=mid) modify(p,v,l,mid,rt<<1);
else modify(p,v,mid+1,r,rt<<1|1);
up(rt);
}
static int query(int L,int R,int l,int r,int rt) {
if (L<=l && r<=R) return t[rt];
int mid = l+r>>1;
int ret = 0;
if (L<=mid) ret = max(ret,query(L,R,l,mid,rt<<1));
if (R> mid) ret = max(ret,query(L,R,mid+1,r,rt<<1|1));
return ret;
}
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
while (cin.hasNext()) {
n = cin.nextInt(); m = cin.nextInt();
for (int i = 1; i <= n; i ++) a[i] = cin.nextInt();
build(1,n,1);
for (int i = 0; i < m; i ++) {
String op = cin.next();
int a,b;
a = cin.nextInt(); b = cin.nextInt();
if (op.equals("U")) {
modify(a,b,1,n,1);
} else {
System.out.println(query(a,b,1,n,1));
}
}
}
}
}