C - Not a Multiple of 3 Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 600

問題文

12 からなる長さ N の整数列 A=(A_1,A_2,\cdots,A_N) が与えられます.

AK 個の連続部分列に分割することを考えます. この時,各部分列について,その値の総和が 3 で割り切れないようにしたいです.

このような分割が可能かどうか判定し,可能な場合は分割の方法を一つ示してください.

制約

  • 2 \leq K \leq N \leq 2 \times 10^5
  • 1 \leq A_i \leq 2
  • 入力される値はすべて整数である

入力

入力は以下の形式で標準入力から与えられる.

N K
A_1 A_2 \cdots A_N

出力

条件を満たす分割が存在しない場合,No と出力せよ. 存在する場合,以下の形式で答えを出力せよ.

Yes
L_1 L_2 \cdots L_K

ここで,L_i は先頭から i 番目の部分列の長さを表す. より正確には,各 i について,A の先頭から (\sum_{1 \leq j<i}L_j)+1 番目の要素から \sum_{1 \leq j \leq i}L_j 番目の要素までを含む連続部分列を取り出すことを意味する. L は,1 \leq L_i および \sum_{1 \leq i \leq K}L_i=N を満たす必要がある.

解が複数存在する場合,どれを出力しても正解とみなされる.


入力例 1

4 2
1 2 2 1

出力例 1

Yes
1 3

例えば,A(1),(2,2,1) と分割すれば条件を満たします.