AT_pakencamp_2022_day1_h Attack Survival

题目描述

hiikunZ 君是一个答题大会的主办人,但不擅长管理得分。因此,你决定帮他编写一个程序,管理“攻击生存”规则下的得分。请编写程序解决以下问题。 有 $N$ 名参赛者,编号从 $1$ 到 $N$。每位参赛者有一个“体力”参数。开始时,第 $i$ 位参赛者的体力为 $A_i$。接下来有 $Q$ 次如下两种类型的事件: - `1 x y`:参赛者 $x$ 答对了一道分值为 $y$ 的题目。此时,除参赛者 $x$ 外所有体力大于 $0$ 的参赛者,其体力都减少 $y$。 - `2 x y`:参赛者 $x$ 答错了一道分值为 $y$ 的题目。此时,参赛者 $x$ 的体力减少 $y$。 请在每次事件后,按**升序**列举出在本次事件前体力大于 $0$、但事件后体力小于等于 $0$ 的所有参赛者编号。

输入格式

输入按以下格式通过标准输入给出。这里 $event_i$ 表示第 $i$ 个事件。 > $N$ $Q$ $A_1$ $A_2$ $\cdots$ $A_N$ > $event_1$ > $event_2$ > $\vdots$ > $event_Q$ 每个事件的格式如下其一: > 1 $x$ $y$ > 2 $x$ $y$

输出格式

输出共 $Q$ 行。 第 $i$ 行输出第 $i$ 个事件前体力大于 $0$、且事件后体力变为 $0$ 或更少的参赛者人数,以及这些参赛者的编号(按照升序排列),以空格分隔。

说明/提示

### 样例解释 1 初始时各参赛者体力为 $(5,5,5,10)$。 第 $1$ 次事件后,各参赛者体力变为 $(0,5,0,5)$。 第 $1$ 次事件前体力大于 $0$、事件后体力变为 $0$ 或以下的参赛者是 1 号和 3 号,共 2 人。 第 $2$ 次事件后,各参赛者体力变为 $(0,5,0,0)$。 第 $2$ 次事件前体力大于 $0$、事件后体力变为 $0$ 或以下的参赛者是 4 号,共 1 人。 ### 数据范围 - $1 \leq N,Q \leq 200000$ - $1 \leq A_i \leq 10^9$ - $1 \leq x \leq N$ - $1 \leq y \leq 10^9$ - 每次事件发生前,参与本次事件的参赛者 $x$ 的体力都大于 $0$ - 输入均为整数 由 ChatGPT 5 翻译