Codeforces Round 599 (Div. 2) |
---|
Закончено |
Эта задача отличается от упрощённой версии. В этой версии задачи Уджана может сделать не более $$$2n$$$ обменов. Кроме того, $$$k \le 1000, n \le 50$$$ и необходимо вывести сами обмены. Вы можете взламывать эту задачу тогда, когда решите ее. Но предыдущую только тогда, когда решите обе задачи.
После долгих страданий и многих неуспешных попыток Уджан решил снова попробовать прибраться в своём доме. Вначале он решил привести в порядок свои строки.
У Уджана есть две различные строки $$$s$$$ и $$$t$$$ длины $$$n$$$, которые содержат только строчные буквы английского алфавита. Он хочет сделать их одинаковыми. Так как Уджан ленивый, он выполнит следующую операцию не более $$$2n$$$ раз: он выбирает два индекса $$$i$$$ и $$$j$$$ ($$$1 \le i,j \le n$$$, значения $$$i$$$ и $$$j$$$ могут как совпадать, так и различаться), и меняет местами буквы $$$s_i$$$ и $$$t_j$$$.
Цель Уджан сделать строки $$$s$$$ и $$$t$$$ равными. Уджану не нужно минимизировать количество операций. Его устроит любой способ, который содержит $$$2n$$$ или менее операций.
Первая строка содержит одно целое число $$$k$$$ ($$$1 \leq k \leq 1000$$$) — количество наборов входных данных в тесте.
Для каждого набора входных данных первая строка содержит одно целое число $$$n$$$ ($$$2 \leq n \leq 50$$$) — длину строк $$$s$$$ и $$$t$$$.
Следующие две строки содержат $$$s$$$ и $$$t$$$ длины ровно $$$n$$$. Строки содержат исключительно строчные буквы английского алфавита. Гарантируется, что строки различные.
Для каждого набора входных данных выведите «Yes», если Уджан может сделать строки одинаковыми за $$$2n$$$ или менее операций, и «No» в противоположном случае. Вы можете выводить каждую букву в любом регистре (строчную или заглавную).
В случае положительного ответа в следующую строку выведите целое число $$$m$$$ ($$$1 \le m \le 2n$$$), где $$$m$$$ — количество операций в ответе. Затем выведите $$$m$$$ строк, где каждая строка содержит два целых числа $$$i, j$$$ ($$$1 \le i, j \le n$$$), которые обозначают что во время соответствующей операции Уджан обменивает символы $$$s_i$$$ и $$$t_j$$$. Вам не нужно минимизировать количество операций. Любой способ сделать это за $$$2n$$$ или менее операций является корректным ответом.
4 5 souse houhe 3 cat dog 2 aa az 3 abc bca
Yes 1 1 4 No No Yes 3 1 2 3 1 2 3
Название |
---|