printРабочее место участника

printЗадачи

226. Цветные перестановки

Ограничения: время – 3s/6s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Даны две перестановки `A=(a_1,\ a_2,\ …,\ a_N)` и `B=(b_1,\ b_2,\ …,\ b_N)` целых чисел от 1 до `N` (перестановкой чисел от 1 до `N` называется последовательность длины `N`, в которой каждое из чисел от 1 до `N` встречается ровно один раз).
Каждое из чисел от 1 до `N` необходимо покрасить в один из трех цветов – красный, зеленый или синий. После этого разрешается в перестановке `A` менять местами пары разноцветных соседних элементов так, чтобы в конце получилась перестановка `B`.
Например, если `A`=(1, 2, 3), а `B`=(2, 3, 1), то можно покрасить 1 в красный цвет, а 2 и 3 – в синий, после чего преобразовать `A` в `B` так: `(1,\ 2,\ 3)\ →\ (2,\ 1,\ 3)\ →\ (2,\ 3,\ 1)`.
Ваша задача: написать программу для нахождения искомой раскраски чисел от 1 до `N`.
В первой строке ввода записано число `N\ (1\ ≤\ N\ ≤\ 100000)`. Во второй и третьей строках указаны перестановки `A` и `B` соответственно. Числа в перестановках отделены пробелами.
Если искомой раскраски не существует, то выведите слово NO. В противном случае выведите строку из `N` символов. `i`-й символ данной строки должен определять цвет числа `i\ (1\ ≤\ i\ ≤\ N)`, причем красный цвет представляется символом R, зеленый – G, а синий – B.

Пример ввода 1

3
1 2 3
2 3 1

Пример вывода 1

RBB

Пример ввода 2

4
1 2 3 4
4 3 2 1

Пример вывода 2

NO
Источник: http://neerc.ifmo.ru/school/archive/
loading