#L0523. 成绩查询与更新

成绩查询与更新

题目背景

很多学校流行一种比较的习惯,老师们喜欢询问从某位同学到另一位同学之间,成绩最高的是多少。这让很多同学感到厌烦。

题目描述

不管同学们是否喜欢,现在需要你按照老师的要求,编写一个程序来处理成绩的查询与更新操作。

给定 nn 位同学的初始成绩,你需要处理 mm 条操作,操作分为两种:

  • 询问:查询编号在 aabb(含 a,ba, b)之间的同学中,成绩最高的值。
  • 更新:若编号为 aa 的同学当前成绩低于 bb,则将其成绩更改为 bb,否则不做修改。

输入格式

第一行两个正整数 nnmm0<n2×1050 \lt n \le 2 \times 10^50<m2×1050 \lt m \le 2 \times 10^5),分别表示学生人数和操作条数。学生编号从 11nn

第二行 nn 个正整数,第 ii 个数表示编号为 ii 的同学的初始成绩,保证成绩为 11091 \sim 10^9 之间的正整数。

接下来 mm 行,每行一个字符 cc(仅取 QU)和两个正整数 aa, bb

  • ccQ 时,表示一次询问,求编号 aabb(含 a,ba, b)之间的最高成绩;
  • ccU 时,表示一次更新,若编号 aa 的同学成绩低于 bb,则更新为 bb

输出格式

对于每次询问操作,输出一行一个整数,表示最高成绩。

样例

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
5

6 5 9

</p>

提示

数据范围与约定

对于 100%100\% 的数据,1n,m2×1051 \le n, m \le 2 \times 10^511 \le 成绩 109\le 10^9

思路提示

本题可用线段树或树状数组维护区间最大值。

难度 普及+/提高-
通过率
尝试 0
已通过 0
ID
1251
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者