QOJ.ac

QOJ

Limite de temps : 4 s Limite de mémoire : 128 MB Points totaux : 100

#396. 赛车

Statistiques

Byteasar 正在度过又一个周六的早晨,观看有线电视上众多的体育频道之一。今天他将观看 Byteotia 杯赛车比赛的总决赛,共有 $n$ 名车手参赛。每位车手都已经获得了一定数量的积分,但最后一场比赛可能会显著改变排名,因此 Byteasar 将会全神贯注地观看比赛。决赛的积分规则如下:第一名获得 $n$ 分,第二名获得 $n-1$ 分,第三名获得 $n-2$ 分,以此类推,直到最后一名获得 1 分——我们假设终点线处没有并列名次。接下来,这些积分将与每位选手之前获得的积分相加,最终总积分最高的所有选手将被命名为获胜者,赢得 Byteotia 杯。

为了增加趣味性,组织者在决赛前通过给予奖励和/或惩罚来调整分数。这些调整会随着时间推移公布,增加了每个人的兴奋感。我们的朋友 Byteasar 特别兴奋,他请求你编写一个程序,在分数调整公布时,跟踪有多少名车手可能在总排名中成为获胜者。具体来说,你的程序需要处理三种类型的查询:

  • B x y(奖励)——当前至少有 $x$ 分的每位车手获得额外的 $y$ 分;
  • K x y(惩罚)——当前最多有 $x$ 分的每位车手失去 $y$ 分(注意,有些车手最终可能会得到负分);
  • Z ——查询在决赛前不再有任何分数变动的情况下,有多少名车手可能赢得 Byteotia 杯。

编写一个程序,读入每位选手目前获得的积分,应用组织者宣布的奖励和惩罚,回答 Byteasar 的问题,并将结果打印到标准输出。

输入格式

标准输入的第一行包含两个整数 $n$ 和 $q$,由空格分隔,分别指定比赛中的车手数量和查询数量(即组织者公告和 Byteasar 提问的总数)。

输入的第二行包含一个由 $n$ 个整数 $p_1, p_2, \dots, p_n$ 组成的序列($0 \le p_i \le 2 \cdot 10^6$),由空格分隔,指定每位车手的初始积分。

接下来的 $q$ 行,每行编码一个上述格式的查询。即,它包含一个字符 BKZ,以及(对于 BK 查询)两个整数 $x, y$($-10^{18} \le x \le 10^{18}$,$0 \le y \le 10^6$),所有内容均由空格分隔。

保证至少会有一个 Z 类型的查询。

输出格式

对于每个后续的 Z 类型查询,其答案应打印在标准输出的新行上。

样例

输入格式 1

4 3
10 8 4 8
Z
B 9 5
Z

输出格式 1

3
1

说明

在奖励发放之前,第一位车手拥有最多的积分,因此如果他在决赛中获得第一名,他肯定会赢得奖杯。如果第二位或第四位车手在决赛中获得第一名,且第一位车手获得第三或第四名,他们也将赢得奖杯。无论决赛结果如何,第三位车手都无法赢得奖杯。在应用奖励后,只有第一位车手(他是唯一获得 5 分奖励的人)可以赢得奖杯。

样例评分测试

  • 1ocen: $n = 8$,一个 Z 类型查询,$p_i = 2i - 2$,对于 $1 \le i \le n$。
  • 2ocen: $n = 1000$,一个 Z 类型查询,$1 \le p_i \le n + 5$,五名选手没有赢得奖杯的机会。
  • 3ocen: $n = 300\,000$ 且 $q = 50\,000$,$p_i = n + 1 - i$,对于 $1 \le i \le n$,查询在以下四种之间循环(其中 $0 \le i < \frac{q}{4}$ 为循环编号):
    • Z
    • K 2i 1
    • Z
    • B i + 1 1

子任务

测试集由以下子集组成。在每个子集中,可能有多个测试用例。所有测试用例均满足 $3 \le n \le 300\,000$,$1 \le q \le 500\,000$。

子任务 条件 分值
1 $n \le 10, q = 1$ 5
2 $q = 1$ 15
3 $n \le 1000, q \le 2000$ 10
4 $q \le 50\,000$ 35
5 无其他条件 35

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.