C - Not a Multiple of 3
Editorial
/
Time Limit: 2 sec / Memory Limit: 1024 MB
配点 : 600 点
問題文
1 と 2 からなる長さ N の整数列 A=(A_1,A_2,\cdots,A_N) が与えられます.
A を K 個の連続部分列に分割することを考えます. この時,各部分列について,その値の総和が 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) と分割すれば条件を満たします.