Codeforces Round 782 (Div. 2)
B
Bit Flipping
Codeforces
1300
原题
← AC →
翻译中…

You are given a binary string of length $n$. You have exactly $k$ moves. In one move, you must select a single bit. The state of all bits except that bit will get flipped ($0$ becomes $1$, $1$ becomes $0$). You need to output the lexicographically largest string that you can get after using all $k$ moves. Also, output the number of times you will select each bit. If there are multiple ways to do this, you may output any of them.

翻译中…

A binary string $a$ is lexicographically larger than a binary string $b$ of the same length, if and only if the following holds:

翻译中…
  • in the first position where $a$ and $b$ differ, the string $a$ contains a $1$, and the string $b$ contains a $0$.
翻译中…

Input

翻译中…

The first line contains a single integer $t$ ($1 \le t \le 1000$)  — the number of test cases.

翻译中…

Each test case has two lines. The first line has two integers $n$ and $k$ ($1 \leq n \leq 2 \cdot 10^5$; $0 \leq k \leq 10^9$).

翻译中…

The second line has a binary string of length $n$, each character is either $0$ or $1$.

翻译中…

The sum of $n$ over all test cases does not exceed $2 \cdot 10^5$.

翻译中…

Output

翻译中…

For each test case, output two lines.

翻译中…

The first line should contain the lexicographically largest string you can obtain.

翻译中…

The second line should contain $n$ integers $f_1, f_2, \ldots, f_n$, where $f_i$ is the number of times the $i$-th bit is selected. The sum of all the integers must be equal to $k$.

翻译中…

Note

翻译中…

Here is the explanation for the first testcase. Each step shows how the binary string changes in a move.

翻译中…
  • Choose bit $1$: $\color{red}{\underline{1}00001} \rightarrow \color{red}{\underline{1}}\color{blue}{11110}$.
  • Choose bit $4$: $\color{red}{111\underline{1}10} \rightarrow \color{blue}{000}\color{red}{\underline{1}}\color{blue}{01}$.
  • Choose bit $4$: $\color{red}{000\underline{1}01} \rightarrow \color{blue}{111}\color{red}{\underline{1}}\color{blue}{10}$.
翻译中…

The final string is $111110$ and this is the lexicographically largest string we can get.

翻译中…

样例

Input #1
6
6 3
100001
6 4
100011
6 0
000000
6 1
111001
6 11
101100
6 12
001110
Output #1
111110
1 0 0 2 0 0
111110
0 1 1 1 0 1
000000
0 0 0 0 0 0
100110
1 0 0 0 0 0
111111
1 2 1 3 0 4
111110
1 1 4 2 0 4
InputCopy OutputCopy
题目信息
题号
1659B
时间限制
1 s
内存限制
256 MB
标签
位运算
构造
贪心
字符串

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。