CF1659B.Bit Flipping

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given a binary string of length nn . You have exactly kk moves. In one move, you must select a single bit. The state of all bits except that bit will get flipped ( 00 becomes 11 , 11 becomes 00 ). You need to output the lexicographically largest string that you can get after using all kk 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 aa is lexicographically larger than a binary string bb of the same length, if and only if the following holds:

  • in the first position where aa and bb differ, the string aa contains a 11 , and the string bb contains a 00 .

输入格式

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

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

The second line has a binary string of length nn , each character is either 00 or 11 .

The sum of nn over all test cases does not exceed 21052 \cdot 10^5 .

输出格式

For each test case, output two lines.

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

The second line should contain nn integers f1,f2,,fnf_1, f_2, \ldots, f_n , where fif_i is the number of times the ii -th bit is selected. The sum of all the integers must be equal to kk .

输入输出样例

  • 输入#1

    6
    6 3
    100001
    6 4
    100011
    6 0
    000000
    6 1
    111001
    6 11
    101100
    6 12
    001110

    输出#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

说明/提示

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

  • Choose bit 11 : 100001111110\color{red}{\underline{1}00001} \rightarrow \color{red}{\underline{1}}\color{blue}{11110} .
  • Choose bit 44 : 111110000101\color{red}{111\underline{1}10} \rightarrow \color{blue}{000}\color{red}{\underline{1}}\color{blue}{01} .
  • Choose bit 44 : 000101111110\color{red}{000\underline{1}01} \rightarrow \color{blue}{111}\color{red}{\underline{1}}\color{blue}{10} .

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

首页