#P9566. [SDCPC 2023] Difficult Constructive Problem

[SDCPC 2023] Difficult Constructive Problem

题目描述

Given a string s1s2sns_1s_2\cdots s_n of length nn where si{0,1,?}s_i \in \{\text{0}, \text{1}, \text{?}\} and an integer kk, please fill out all the ?\text{?} with 0\text{0} or 1\text{1} such that the number of indices ii satisfying 1i<n1 \le i < n and sisi+1s_i \ne s_{i+1} equals to kk. Different ?\text{?} can be replaced with different characters.

To make this problem even more difficult, we ask you to find the answer with the smallest possible lexicographic order if it exists.

Recall that a string a1a2ana_1a_2\cdots a_n of length nn is lexicographically smaller than another string b1b2bnb_1b_2\cdots b_n of length nn if there exists an integer kk (1kn1 \le k \le n) such that ai=bia_i = b_i for all 1i<k1 \le i < k and ak<bka_k < b_k.

输入格式

There are multiple test cases. The first line of the input contains an integer TT indicating the number of test cases. For each test case:

The first line contains two integers nn and kk (1n1051 \le n \le 10^5, 0k<n0 \le k < n) indicating the length of the string and the required number of indices satisfying the condition.

The second line contains a string s1s2,sns_1s_2,\cdots s_n (si{0,1,?}s_i \in \{\text{0}, \text{1}, \text{?}\}).

It's guaranteed that the sum of nn of all test cases will not exceed 10610^6.

输出格式

For each test case output one line. If the answer exists output the lexicographically smallest one (you need to output the whole given string after filling out all the ?\text{?} and make this string the lexicographically smallest); Otherwise output Impossible.

5
9 6
1?010??01
9 5
1?010??01
9 6
100101101
9 5
100101101
9 3
????????1

100100101
Impossible
100101101
Impossible
000000101