Codeforces Round 906 (Div. 1) |
---|
Закончено |
У Циншань есть строка $$$s$$$, которая содержит только $$$\texttt{0}$$$ и $$$\texttt{1}$$$.
Строка $$$a$$$ длины $$$k$$$ является хорошей тогда и только тогда, когда
Для участников Div. 2: обратите внимание, что это условие отличается от условия в задаче B.
Например, $$$\texttt{10}$$$, $$$\texttt{1010}$$$, $$$\texttt{111000}$$$ — хорошие строки, а $$$\texttt{11}$$$, $$$\texttt{101}$$$, $$$\texttt{001}$$$, $$$\texttt{001100}$$$ — плохие.
Циншань хочет сделать $$$s$$$ хорошей. Для этого она может проделать следующую операцию не более $$$300$$$ раз (возможно, ноль):
Скажите, возможно ли сделать $$$s$$$ хорошей. Если это возможно, то приведите последовательность операций, которая делает строку $$$s$$$ хорошей.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1\le t\le 100$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Первая строка каждого набора входных данных содержит единственное целое число $$$n$$$ ($$$1 \le n\le 100$$$) — длину строки $$$s$$$, соответственно.
Вторая строка каждого набора входных данных содержит строку $$$s$$$ длины $$$n$$$.
Гарантируется, что $$$s$$$ состоит только из $$$\texttt{0}$$$ и $$$\texttt{1}$$$.
Для каждого набора входных данных, если невозможно сделать $$$s$$$ хорошей, выведите $$$-1$$$.
В противном случае в первой строке выведите $$$p$$$ ($$$0 \le p \le 300$$$) — количество операций.
Затем выведите $$$p$$$ целых чисел во второй строке. Целое число $$$i$$$ должно быть индексом $$$x_i$$$ ($$$0 \le x_i \le n+2i-2$$$) — позицией, в которую необходимо вставить $$$\texttt{01}$$$ в текущем $$$s$$$. Если $$$x_i=0$$$, то $$$\texttt{01}$$$ вставляется в начало $$$s$$$. В противном случае, $$$\texttt{01}$$$ вставляется сразу после $$$x_i$$$-го символа $$$s$$$.
Можно показать, что при данных ограничениях, если ответ существует, то всегда найдется ответ, требующий не более $$$300$$$ операций.
620130004111160011101001110011003001
0 -1 -1 2 6 7 1 10 -1
В первом наборе входных данных можно выполнить ноль операций и получить $$$s=\texttt{01}$$$, что является хорошей строкой.
Другим правильным решением является выполнение одной операции: (вставленная $$$\texttt{01}$$$ подчеркнута)
получаем $$$s = \texttt{0011}$$$, что является хорошей строкой.
Во втором и третьем наборах входных данных сделать $$$s$$$ хорошей невозможно.
В четвертом наборе входных данных можно выполнить две операции:
и получить $$$s = \texttt{0011100011}$$$, что является хорошей строкой.
Название |
---|