Codeforces Round 547 (Div. 3) |
---|
Закончено |
Заданы $$$n$$$ левых и $$$n$$$ правых ботинок. Каждый ботинок имеет цвет, который задан строчной буквой латинского алфавита или знаком вопроса ('?'). Таким образом, вам заданы две строки $$$l$$$ и $$$r$$$, каждая имеет длину $$$n$$$, где буква $$$l_i$$$ обозначает цвет $$$i$$$-го левого ботинка, а буква $$$r_i$$$ обозначает цвет $$$i$$$-го правого ботинка.
Строчная буква латинского алфавита обозначает конкретный цвет ботинка, а знак вопроса — неопределенный цвет. Два конкретных цвета совместимы, если они в точности совпадают. Неопределенный цвет совместим с любым цветом (не важно — конкретным или неопределенным).
Например, следующие пары цветов совместимы: ('f', 'f'), ('?', 'z'), ('a', '?') и ('?', '?'). Следующие пары цветов не совместимы: ('f', 'g') и ('a', 'z').
Вычислите максимальное количество пар ботинок, которые можно собрать из заданного набора так, что каждая пара состоит из одного левого и одного правого ботинка и цвета ботинок в паре совместимы.
Выведите максимальное количество пар и сами пары. Конечно, каждый ботинок может входить в состав не более одной пары.
В первой строке записано целое число $$$n$$$ ($$$1 \le n \le 150000$$$) — количество ботинок на каждую ногу (то есть количество левых и правых ботинок).
Вторая строка содержит $$$l$$$, её длина равна $$$n$$$. Она содержит лишь строчные буквы латинского алфавита или знаки вопроса, $$$i$$$-й символ строки соответствует цвету $$$i$$$-го левого ботинка.
Третья строка содержит $$$r$$$, её длина равна $$$n$$$. Она содержит лишь строчные буквы латинского алфавита или знаки вопроса, $$$i$$$-й символ строки соответствует цвету $$$i$$$-го правого ботинка.
Выведите $$$k$$$ — максимальное количество пар ботинок вида «левый и правый ботинок» совместимых цветов, которые можно собрать из заданного набора.
Следующие $$$k$$$ строк должны содержать пары целых чисел $$$a_j, b_j$$$ ($$$1 \le a_j, b_j \le n$$$), где $$$j$$$-я из этих строк содержит индекс левого ботинка в $$$j$$$-й паре (число $$$a_j$$$) и индекс правого ботинка в $$$j$$$-й паре (число $$$b_j$$$). Все значения $$$a_j$$$ должны быть различны, все значения $$$b_j$$$ должны быть различны.
Если существует несколько ответов, выведите любой из них.
10 codeforces dodivthree
5 7 8 4 9 2 2 9 10 3 1
7 abaca?b zabbbcc
5 6 5 2 3 4 6 7 4 1 2
9 bambarbia hellocode
0
10 code?????? ??????test
10 6 2 1 6 7 3 3 5 4 8 9 7 5 1 2 4 10 9 8 10
Название |
---|