G. Кольоровi книги
G. Кольоровi книги
Сьогоднi Козак Вус знайшов поличку книг. Усього на поличцi було n книг, розташованих у ряд. На кожнiй книзi було написане одне цiле число ai
. Усi цi числа рiзнi з промiжку [**1; n**]. Iншими словами, a — перестановка. Також кожна книга має свiй колiр, колiр i-ої книги ci
.
Козак хоче навести лад на поличцi, для цього потрiбно, щоб книги йшли в порядку зростання чисел, записаних на них, тобто книга 1 iде першою, наступна 2 i так далi. За одну операцiю вiн може помiняти мiсцями будь-якi двi книги рiзного кольору. Допоможiть Вусу впоратись з цiєю задачею за мiнiмальну кiлькiсть операцiй. Гарантується, що це можливо зробити.
Формат вхiдних даних
Перший рядок мiстить одне цiле число n (**1 ⩽ n ⩽ 105
**) — кiлькiсть книг.
Другий рядок мiстить n цiлих чисел a1
; a2
; : : : ; an
(**1 ⩽ ai
⩽ n**) — числа, записанi на книгах.
Гарантується, що всi числа рiзнi.
Третiй рядок мiстить n цiлих чисел c1
; c2
; : : : ; cn
(**1 ⩽ ci
⩽ n**) — кольори книг.
Гарантується, що рiшення завжди iснує.
Формат вихiдних даних
У першому рядку виведiть одне число k — кiлькiсть операцiй.
У наступних k рядках виведiть по два цiлi числа — позицiї книг, якi потрiбно помiняти мiсцями.
Оцiнювання
1) (до 50 балiв) n ⩽ 1 000; припустимо, що m—мiнiмальна кiлькiсть операцiй, якi потрiбно зробити, щоб вiдсортувати книги в певному тестi, а k —кiлькiсть операцiй, якi ви використали. Тодi результат за цей тест буде рiвний:
50, якщо k = m
10 + ⌊30 - 30 * (k - m)/(3n - m)⌋, якщо m < k ⩽ 3n
0, якщо k > 3n.
Ваша кiлькiсть балiв за цей блок буде рiвною мiнiмуму з результатiв у всiх тестах з блоку.
2) (10 балiв) 1 000 < n ⩽ 105
, усi кольори рiзнi.
3) (40 балiв) без додаткових обмежень.
7 2 5 3 7 1 6 4 3 2 2 3 3 2 3
5 2 4 7 4 2 7 1 2 1 5
2 2 1 1 2
1 1 2