ログインしてください。
L - Avoid Multiple
解説
/
/
実行時間制限: 2 sec / メモリ制限: 1024 MiB
配点 : 100 点
問題文
長さ N の正整数列 A=(A_1,A_2,\ldots,A_N) が与えられます。はじめ、 A に M の倍数が含まれていないことが保証されます。
あなたは次の操作を N-1 回行います。
- 1 \le i \le |A|-1 を満たす整数 i を選択する
- A_i と A_{i+1} を足して 1 つの要素にする
- より正確には、 (A_1 ,\ldots,A_{i-1}),(A_{i}+A_{i+1}),(A_{i+2},\ldots,A_{|A|}) をこの順に連結したもので A を置き換える
- この操作により A の長さは 1 減少する
操作の過程で A に M の倍数が現れないように N-1 回の操作を行えるかどうか判定してください。 操作が可能な場合はそのような操作列を 1 つ構成してください。
制約
- 入力はすべて整数
- 3 \le N \le 2\times 10^5
- 2 \le M \le 10^9
- 1 \le A_i < M
- A_i は M の倍数ではない
入力
入力は以下の形式で与えられる。
N M A_1 A_2 \cdots A_N
出力
条件を満たす操作列が存在しない場合、 1 行目に No を出力せよ。
条件を満たす操作列が存在する場合、 1 行目に Yes を出力し、 2 行目に各操作で選択した i を順に空白区切りで出力せよ。
条件を満たす操作列が複数存在する場合、どれを出力しても正解とみなされる。
入力例 1
4 4 1 2 3 1
出力例 1
Yes 2 1 1
この入力例において、はじめ A=(1,2,3,1) です。
- 1 回目の操作では i=2 を選択して A=(1,5,1) となります。
- 2 回目の操作では i=1 を選択して A=(6,1) となります。
- 3 回目の操作では i=1 を選択して A=(7) となります。
この操作の過程では A に 4 の倍数が現れません。
入力例 2
9 5 3 2 3 2 1 3 2 3 2
出力例 2
Yes 4 3 2 2 2 2 1 1
入力例 3
7 123456789 69024393 73329927 23109098 63845999 71517732 113556305 79443702
出力例 3
No