아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Сортировка очередями

면접 대비

시간 제한2초메모리 제한256 MB

요약
서로 다른 수 n개를 k개의 FIFO 큐로 오름차순 정렬할 수 있는지 판정하고, 가능하면 2n개의 입력·출력 연산 순서를 출력한다.
난이도

보통10점 중 6점

유형
큐, 그리디, 정렬, 구현
정답자
아직 제출이 없습니다

문제

Очередь — структура данных, основанная на принципе «первый пришел — первый вышел» (FIFO, First In — First Out). Добавление элемента возможно только в конец очереди, извлечение — только из начала очереди. Таким образом, элементы извлекаются из очереди в том же порядке, в котором они были в нее добавлены.

Задача сортировки состоит в упорядочивании заданного массива чисел (или других объектов) по возрастанию или убыванию. У этой задачи существует достаточно многих вариантов, для многих из которых существуют весьма эффективные алгоритмы.

Далее в задаче рассматривается специальное устройство, содержащее входной поток, выходной поток и k очередей, пронумерованных числами от 1 до k.

Ваша задача состоит в том, чтобы по заданной последовательности различных чисел, которую требуется отсортировать, составить программу для этого устройства, которая будет выводить в выходной поток те же числа, что поступили во входной поток, но упорядоченные по возрастанию.

Программа должна содержать ровно 2n операций, каждая из которых либо читает число из входного потока и добавляет его в одну из очередей, либо извлекает число из одной из очередей и выводит его в выходной поток.

입력

Первая строка содержит целое число n (1 ≤ n ≤ 300). Вторая строка содержит n различных целых чисел a1, ..., an в том порядке, в котором они поступают из входного потока (1 ≤ ai ≤ 109 для всех i от 1 до n). Третья строка содержит целое число k (1 ≤ k ≤ n).

출력

Если сортировку выполнить невозможно, выведите слово NO.

Иначе выведите слово YES и 2n строк, задающих программу сортировки. Каждая из этих строк должна описывать одну операцию и иметь следующий формат:

  • I(j) — считать элемент из входного потока и добавить его в очередь номер j (1 ≤ j ≤ k);
  • R(j) — извлечь элемент из очереди номер j (1 ≤ j ≤ k) и вывести его в выходной поток.

예제1

  1. 예제 1

    입력
    4
    5 1 4 10
    2
    
    예상 출력
    YES
    I(1)
    I(2)
    R(2)
    I(2)
    I(2)
    R(2)
    R(1)
    R(2)