signed main() {
scanf("%d%d", &n, &T);
for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
BUILD(1, 1, n);
//T <<= 1;
while (T --) {
char op;
int x, y;
scanf("%c%d%d", &op, &x, &y);
if (op == 'U' && a[x] < y) UPDATE(1, x, y);
else if (op == 'Q') printf("%d\n", SEARCH(1, x, y));
}
return 0;
}
in:
5 6
1 2 3 4 5
Q 1 5
U 3 6
Q 3 4
Q 4 5
U 2 9
Q 1 5
out:
5
6
while 前必须加一个 T <<= 1,否则 while 循环只会执行一半。
为什么呢????