Codeforces Round 782 (Div. 2) |
---|
Закончено |
Вам дана битовая строка длины $$$n$$$. Вы должны сделать ровно $$$k$$$ ходов. На каждом ходу вы должны выбрать один бит строки. Состояние всех битов кроме выбранного изменятся на противоположное ($$$0$$$ станет $$$1$$$, $$$1$$$ станет $$$0$$$). Вам нужно вывести лексикографически максимальную строку, которую вы можете получить, используя все $$$k$$$ ходов. Кроме того, для каждого бита выведите, сколько раз вы его выбираете для получения такой строки. Если есть несколько возможных решений, выведите любое из них.
Битовая строка $$$a$$$ лексикографически больше битовой строки $$$b$$$ такой же длины, если и только если выполняется следующее:
Первая строка содержит одно целое число $$$t$$$ ($$$1 \le t \le 1000$$$) — количество наборов входных данных.
Каждый набор описывается в двух строках. Первая строка содержит два целых числа $$$n$$$ и $$$k$$$ ($$$1 \leq n \leq 2 \cdot 10^5$$$; $$$0 \leq k \leq 10^9$$$).
Вторая строка содержит битовую строку длины $$$n$$$, каждый символ которой либо $$$0$$$, либо $$$1$$$.
Гарантируется, что сумма значений $$$n$$$ по всем наборам входных данных не превосходит $$$2 \cdot 10^5$$$.
Для каждого набора входных данных выведите две строки.
Первая строка должна содержать лексикографически максимальную строку, которую вы можете получить.
Вторая строка должна содержать $$$n$$$ целых чисел $$$f_1, f_2, \ldots, f_n$$$, где $$$f_i$$$ — количество раз, которое вы выбираете $$$i$$$-й бит. Сумма всех чисел должна быть равна $$$k$$$.
66 31000016 41000116 00000006 11110016 111011006 12001110
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
Рассмотрим первый пример. Ниже пошагово показано, как изменяется строка после каждого хода.
Название |
---|