题目要求
- 每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。学生ID编号从1编到N。
- 第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩。
- 接下来又M行,每一行有一个字符C(只取‘Q’或‘U’),和两个正整数A,B。
- 当C为’Q’的时候, 表示这是一条询问操作,他询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少。
- 当C为‘U’的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。
代码实现
N, M = list(map(int, input().strip().split()))
grade = list(map(int, input().strip().split()))
for i in range(M):
line = list(input().strip().split())
order = line[0]
a, b = list(map(int, line[1:]))
if order == 'Q':
if a > b:
a, b = b, a
print(max(grade[a - 1:b]))
else:
grade[a - 1] = b
测试用例
- 第一组测试用例
- 输入
5 7
1 2 3 4 5
Q 1 5
U 3 6
Q 3 4
Q 4 5
U 4 5
U 2 9
Q 1 5 - 输出
5
6
5
9
- 第二组测试用例
- 输入
3 2
1 2 3
U 2 8
Q 3 1 - 输出
8