CF585A Gennady the Dentist
题目描述
Gennady 是 Berland 最优秀的儿童牙医之一。今天有 $n$ 个孩子预约了他的门诊,他们在他的办公室前排成了一队。
所有的孩子在牙医接诊时都喜欢大声哭泣。我们用整数 $1$ 到 $n$ 按照排队顺序编号这些孩子。每个孩子都有一个自信值 $p_{i}$。孩子们轮流一个接一个地进入办公室;每次都是排在最前面的孩子去看医生。
当 Gennady 为第 $i$ 个孩子看牙时,孩子的哭泣声音为 $v_{i}$。此时,队列中第一个孩子的自信值减少 $v_{i}$,第二个孩子减少 $v_{i}-1$,以此类推。排在第 $v_{i}$ 个之后的孩子几乎听不到哭声,因此他们的自信值保持不变。
如果在任何时刻,第 $j$ 个孩子的自信值变为负数,他会以 $d_{j}$ 的音量哭泣并离开队伍,直接跑向出口,不会去看医生。此时他后面所有孩子的自信值都会减少 $d_{j}$。
所有这些事件会立即发生,可能会因某个孩子的哭泣引发其他孩子的哭泣,造成连锁反应。当走廊里变得安静时,排在队首的孩子将进入医生办公室。
请你帮助牙医 Gennady 确定他最终会给哪些孩子治牙。请按照时间顺序输出被治牙的孩子编号。
输入格式
输入的第一行包含一个正整数 $n$ ($1 \leq n \leq 4000$),表示排队的孩子数。
接下来的 $n$ 行,每行包含三个整数 $v_{i}, d_{i}, p_{i}$($1 \leq v_{i}, d_{i}, p_{i} \leq 10^{6}$),分别表示在医生办公室里的哭声音量、在走廊的哭声影响力以及孩子的初始自信值。
输出格式
第一行输出整数 $k$,表示牙医 Gennady 最终会给多少个孩子治牙。
第二行输出 $k$ 个整数,表示最终被治牙孩子的编号,按顺序输出。
说明/提示
在第一个样例中,Gennady 首先给第一个孩子治牙,他的哭声为 $4$。剩下的孩子的自信值分别变为 $-2, 1, 3, 1$。因此,第二个孩子也会以 $1$ 的音量哭泣并离开队伍。剩下的孩子自信值变为 $0, 2, 0$。然后第三个孩子会进办公室,他的哭声为 $5$。剩下的孩子将无法忍受,也会大声哭泣并直接离开队伍。
在第二个样例中,首先第一个孩子进办公室,他的哭声为 $4$。剩下孩子自信值变为 $5, -1, 6, 8$,于是第三个孩子也会以 $1$ 的音量哭并离队。现在剩下的孩子自信值为 $5, 5, 7$。接下来第二个孩子进办公室,并以 $5$ 的音量哭。剩下孩子自信值变为 $0, 3$。此后第四个孩子进办公室,哭声为 $2$,这时第五个孩子的自信值为 $1$,他将最后一个进办公室。
由 ChatGPT 5 翻译