VK Cup 2018 - Квалификация 2
B
Места в самолёте
Codeforces
1300
原题
← AC →
翻译中…

В самолёте есть $*n*$ рядов мест. Если смотреть на ряды сверху, то в каждом ряду есть $3$ места слева, затем проход между рядами, затем $4$ центральных места, затем ещё один проход между рядами, а затем ещё $3$ места справа.

翻译中…

Известно, что некоторые места уже заняты пассажирами. Всего есть два вида пассажиров — статусные (те, которые часто летают) и обычные.

翻译中…

Перед вами стоит задача рассадить ещё $*k*$ обычных пассажиров так, чтобы суммарное число соседей у статусных пассажиров было минимально возможным. Два пассажира считаются соседями, если они сидят в одном ряду и между ними нет других мест и прохода между рядами. Если пассажир является соседним пассажиром для двух статусных пассажиров, то его следует учитывать в сумме соседей дважды.

翻译中…

Input

翻译中…

В первой строке следуют два целых числа $*n*$ и $*k*$ ($1 ≤ *n* ≤ 100$, $1 ≤ *k* ≤ 10·*n*$) — количество рядов мест в самолёте и количество пассажиров, которых нужно рассадить.

翻译中…

Далее следует описание рядов мест самолёта по одному ряду в строке. Если очередной символ равен '-', то это проход между рядами. Если очередной символ равен '.', то это свободное место. Если очередной символ равен 'S', то на текущем месте будет сидеть статусный пассажир. Если очередной символ равен 'P', то на текущем месте будет сидеть обычный пассажир.

翻译中…

Гарантируется, что количество свободных мест не меньше $*k*$. Гарантируется, что все ряды удовлетворяют описанному в условии формату.

翻译中…

Output

翻译中…

В первую строку выведите минимальное суммарное число соседей у статусных пассажиров.

翻译中…

Далее выведите план рассадки пассажиров, который минимизирует суммарное количество соседей у статусных пассажиров, в том же формате, что и во входных данных. Если в свободное место нужно посадить одного из $*k*$ пассажиров, выведите строчную букву 'x' вместо символа '.'.

翻译中…

Note

翻译中…

В первом примере нужно посадить ещё двух обычных пассажиров. Для минимизации соседей у статусных пассажиров, нужно посадить первого из них на третье слева место, а второго на любое из оставшихся двух мест, так как независимо от выбора места он станет соседом двух статусных пассажиров.

翻译中…

Изначально, у статусного пассажира, который сидит на самом левом месте уже есть сосед. Также на четвёртом и пятом местах слева сидят статусные пассажиры, являющиеся соседями друг для друга (что добавляет к сумме $2$).

翻译中…

Таким образом, после посадки ещё двух обычных пассажиров, итоговое суммарное количество соседей у статусных пассажиров станет равно пяти.

翻译中…

样例

Input #1
1 2
SP.-SS.S-S.S
Output #1
5
SPx-SSxS-S.S
Входные данныеCopy Выходные данныеCopy
Input #2
4 9
PP.-PPPS-S.S
PSP-PPSP-.S.
.S.-S..P-SS.
P.S-P.PP-PSP
Output #2
15
PPx-PPPS-S.S
PSP-PPSP-xSx
xSx-SxxP-SSx
P.S-PxPP-PSP
Входные данныеCopy Выходные данныеCopy
题目信息
标签
*special
模拟

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。