I - Passing Trash
問題文
MCC(Macro Computer Club : デカコンピュータークラブ) には $N + 1$ 人の部員が所属しており、各部員に部員番号 $0, 1, \dots, N$ が付けられています。以降、部員番号が $i$ である部員を単に部員 $i$ と表します。また、部長であるとここちゃんの部員番号は $0$ です。
ある日、とここちゃんは MCC にお土産を買ってきました。お土産は $M$ 個のお菓子が入った箱です。とここちゃんは、初めに箱を部員 $1$ から部員 $N$ の部員の誰かに渡します。
ここで、部員 $i$ は箱を受け取ると次の行動をすることが分かっています。
- 箱を受け取った時点で箱に入っているお菓子の個数を $x$ とする。
- $x \gt P_i$ のとき、箱の中から $P_i$ 個のお菓子を取り、箱を部員 $Q_i$ に渡す。
- $x \le P_i$ のとき、箱の中のお菓子をすべて取る。
MCC には「最後にお菓子をすべて取った人が箱を持ち帰る」というルールがあります。とここちゃんはこのルールに則って、部員 $i$ が箱の中のお菓子をすべて取ったとき、その部員に箱を持ち帰らせることにしました。
とここちゃんが最初に誰に箱を渡すかによって、箱を持ち帰ることになる部員が複数人いる可能性があります。箱を持ち帰ることになる可能性がある部員をすべて列挙してください。
制約
Hard (125点)
- $2 \le N \le 10^5$
- $1 \le M \le 10^{12}$
- $1 \le P_i \le 10^6$
- $1 \le Q_i \le N$
- $Q_i \ne i$
- 入力はすべて整数
Normal (100点)
- Hard の制約に以下の制約を追加
- $2 \le N \le 1000$
- $1 \le M \le 10^9$
Easy (75点)
- Hard の制約に以下の制約を追加
- $2 \le N \le 1000$
- $1 \le M \le 1000$
部分点のみ解答したい場合
部分点のみを解答したい場合、問題によっては結果が TLE となるケースが大量に発生し、ジャッジに時間がかかる可能性があります。
C++の assert
関数やPythonの assert
文などを用いて、変数の値によってプログラムを強制終了させる処理を書き加えることで TLE を防ぎ、より早く結果を得ることができます。
入力
入力は以下の形式で標準入力から与えられます。
$N \ \ M$
$P_1 \ \ \dots \ \ P_N$
$Q_1 \ \ \dots \ \ Q_N$
出力
箱を持ち帰らなければならない可能性がある部員の部員番号を昇順に空白区切りで $1$ 行に出力してください。
より具体的には、箱を持ち帰る可能性がある部員が部員 $S_1, \dots,$ 部員 $S_k$ の $k$ 人 $(1 \le S_1 < \dots < S_k \le N)$ であるとき、次の形式で出力してください。
$S_1 \ \ S_2 \ \ \dots \ \ S_k$
3 4
1 2 3
2 1 1
1 2
とここちゃんが部員 $1,2,3$ に初めに箱を渡したとき、次のようになります。
- とここちゃんが箱を部員 $1$ に渡した場合
- 部員 $1$ は箱の中からお菓子を $1$ 個取る。箱の中にはお菓子が $3$ 個残っているので、部員 $2$ に箱を渡す。
- 部員 $2$ は箱の中からお菓子を $2$ 個取る。箱の中にはお菓子が $1$ 個残っているので、部員 $1$ に箱を渡す。
- 部員 $1$ は箱の中からお菓子を $1$ 個取る。箱の中にはもうお菓子は入っていないので、部員 $1$ が箱を持ち帰ることになる。
- とここちゃんが箱を部員 $2$ に渡した場合
- 部員 $2$ は箱の中からお菓子を $2$ 個取る。箱の中にはお菓子が $2$ 個残っているので、部員 $1$ に箱を渡す。
- 部員 $1$ は箱の中からお菓子を $1$ 個取る。箱の中にはお菓子が $1$ 個残っているので、部員 $2$ に箱を渡す。
- 部員 $2$ は箱の中からお菓子を $1$ 個取る。箱の中にはもうお菓子は入っていないので、部員 $2$ が箱を持ち帰ることになる。
- とここちゃんが箱を部員 $3$ に渡した場合
- 部員 $3$ は箱の中からお菓子を $3$ 個取る。箱の中にはお菓子が $1$ 個残っているので、部員 $1$ に箱を渡す。
- 部員 $1$ は箱の中からお菓子を $1$ 個取る。箱の中にはもうお菓子は入っていないので、部員 $1$ が箱を持ち帰ることになる。
以上より、部員 $1,2$ が箱を持ち帰ることになる可能性があります。
この入力例は Easy・Normal・Hard の制約を満たします。