P14753 [CodeChef] ALTSUFF
提高
题目描述

You are given a binary string S.

In one second, the following scenario happens simultaneously and independently for all the bits which are set to 1 in the string:

Change the bit from 1 to 0.
If the left neighbour exists and is 0, change it to 1.
If the right neighbour exists and is 0, change it to 1.

For example, if S = 010 initially, then after 1 second, S = 101 (the 1 bit and both its neighbours were changed). After another second, S = 010. Here, the first and the last bit were changed to 0 because earlier they were 1. The middle bit was changed because it was 0 earlier and it was a neighbour of a 1 bit.

Find out the string S after K seconds.

------ Input Format ------

  • The first line of input will contain a single integer T, denoting the number of test cases.
  • Each test case consists of multiple lines of input.
  • The first line of each test case contains two space-separated integers N and K — the length of string S and the number of seconds.
  • The next line describes the string S.

------ Output Format ------

For each test case, output the string S after exactly K seconds.

------ Constraints ------

$1 ≤ T ≤ 1000$
$1 ≤ N ≤ 10^{5}$
$1 ≤ K ≤ 10^{9}$
- The sum of $N$ over all test cases won't exceed $10^{6}$.
$S$ can only contain the characters $0$ or $1$.

----- Sample Input 1 ------
3
3 1
101
5 2
10001
14 3
10011010111000
----- Sample Output 1 ------
010
10101
01100101010101
----- explanation 1 ------
Test case $1$: The middle bit is changed to $1$ since it had a neighbouring set bit (in this case both left and right) and both the set bits are changed to $0$. Hence, after one second, it is $101$.

Test case $2$: After first second, the string $S$ will be $01010$. After another second , the string becomes $10101$.

输入格式

见题面

输出格式

见题面

样例输入
3 3 1 101 5 2 10001 14 3 10011010111000
样例输出
010 10101 01100101010101