Codeforces Round 899 (Div. 2) |
---|
Закончено |
Это сложная версия задачи. Различие между двумя версиями заключается в том, что в этой версии нужно минимизировать число выполняемых операций. Делать взломы можно только в том случае, если решены обе версии задачи.
Даны две перестановки$$$^{\dagger}$$$ $$$p_{1}, p_{2}, \ldots, p_{n}$$$ (чисел от $$$1$$$ до $$$n$$$) и $$$q_{1}, q_{2}, \ldots, q_{m}$$$ (чисел от $$$1$$$ до $$$m$$$). Изначально $$$p_{i}=a_{i}$$$ для всех $$$i=1, 2, \ldots, n$$$, а также $$$q_{j} = b_{j}$$$ для всех $$$j = 1, 2, \ldots, m$$$. Вы можете применять к перестановкам следующую операцию несколько раз (возможно, ни одного).
За одну операцию $$$p$$$ и $$$q$$$ меняются в соответствии с тремя следующими шагами:
Ваша цель — добиться одновременного выполнения равенств $$$p_{i}=i$$$ для всех $$$i=1, 2, \ldots, n$$$, а также $$$q_{j} = j$$$ для всех $$$j = 1, 2, \ldots, m$$$.
Найдите произвольный способ добиться этого, используя наименьшее возможное число операций, или сообщите, что это невозможно. Обратите внимание: вам нужно минимизировать число выполненных операций.
$$$^{\dagger}$$$ Перестановкой длины $$$k$$$ является массив, состоящий из $$$k$$$ различных целых чисел от $$$1$$$ до $$$k$$$ в произвольном порядке. Например, $$$[2,3,1,5,4]$$$ — перестановка, но $$$[1,2,2]$$$ не перестановка ($$$2$$$ встречается в массиве дважды) и $$$[1,3,4]$$$ тоже не перестановка ($$$k=3$$$, но в массиве встречается $$$4$$$).
Первая строка содержит два целых числа $$$n$$$ и $$$m$$$ ($$$1 \le n, m \le 2500$$$).
Вторая строка содержит $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$1 \le a_i \le n$$$).
Третья строка содержит $$$m$$$ целых чисел $$$b_1, b_2, \ldots, b_m$$$ ($$$1 \le b_i \le m$$$).
Гарантируется, что $$$a$$$ и $$$b$$$ являются перестановками.
Если решения не существует, выведите одно целое число $$$-1$$$.
Иначе сначала выведите целое число $$$k$$$ — число выполняемых операций, а в каждой из последующих $$$k$$$ строк выведите два числа $$$i$$$ и $$$j$$$ ($$$1 \le i \le n$$$, $$$1 \le j \le m$$$) — числа, выбранные на очередной итерации.
Если существует несколько решений, выведите любое из них.
Обратите внимание: вам нужно минимизировать число выполненных операций.
3 5 2 1 3 5 2 1 4 3
2 3 4 2 4
4 4 3 4 2 1 2 4 1 3
3 3 3 1 4 4 2
2 2 1 2 2 1
-1
В первом тесте можно достичь цели за $$$2$$$ операции:
В третьем тесте достичь цели невозможно.
Название |
---|