Олимпиадный тренинг

Задача . A. Валера и дек


Недавно на курсе по алгоритмам и структурам данных Валера научился пользоваться деком. Он построил дек, заполненный \(n\) элементами. \(i\)-й элемент равен \(a_i\) (\(i\) = \(1, 2, \ldots, n\)). Он последовательно берет из дека два первых (то есть крайних слева) элемента (назовем их \(A\) и \(B\) соответственно) и делает следующее: если \(A > B\), то он \(A\) записывает в начало, а \(B\) записывает в конец дека, иначе он записывает в начало \(B\), а \(A\) записывает в конец дека. Назовем эту последовательность действий операцией.

Например если дек был \([2, 3, 4, 5, 1]\), после операции он запишет \(B=3\) в начало и \(A=2\) в конец, таким образом он получит \([3, 4, 5, 1, 2]\).

Преподаватель курса, увидев увлеченного своим делом Валеру, подошел к нему и задал ему \(q\) вопросов. Каждый вопрос состоит из единственного числа \(m_j\) \((j = 1, 2, \ldots, q)\). Требуется для каждого вопроса ответить какие два элемента он вытащит на \(m_j\)-й операции.

Обратите внимание, что запросы независимы, а числа \(A\) и \(B\) для каждого из запросов нужно вывести в том порядке, в котором они будут вытащены из дека.

Дек — структура данных, представляющая из себя список элементов, в которой добавление новых элементов и удаление существующих производится с обоих концов.

Входные данные

Первая строка содержит два целых числа \(n\) и \(q\) (\(2 \leq n \leq 10^5\), \(0 \leq q \leq 3 \cdot 10^5\)) — количество элементов в деке и количество вопросов преподавателя соответственно. Вторая строка содержит \(n\) целых чисел \(a_1\), \(a_2\), ..., \(a_n\), где \(a_i\) \((0 \leq a_i \leq 10^9)\) — элемент дека в \(i\)-й позиции. Следующие \(q\) строк содержат по одному числу, обозначающее \(m_j\) (\(1 \leq m_j \leq 10^{18}\)).

Выходные данные

Для каждого вопроса преподавателя выведите два числа \(A\) и \(B\) — числа, которые вытащит Валера из дека на \(m_j\)-й операции.

Примечание
    Рассмотрим все 10 шагов для первого теста подробно:
  1. \([1, 2, 3, 4, 5]\) — на первой операции \(A\) и \(B\) равны соответственно \(1\) и \(2\).

    Значит, \(2\) мы запишем в начало дека, а \(1\) — в конец.

    Получим следующее состояние дека: \([2, 3, 4, 5, 1]\).

  2. \([2, 3, 4, 5, 1] \Rightarrow A = 2, B = 3\).
  3. \([3, 4, 5, 1, 2]\)
  4. \([4, 5, 1, 2, 3]\)
  5. \([5, 1, 2, 3, 4]\)
  6. \([5, 2, 3, 4, 1]\)
  7. \([5, 3, 4, 1, 2]\)
  8. \([5, 4, 1, 2, 3]\)
  9. \([5, 1, 2, 3, 4]\)
  10. \([5, 2, 3, 4, 1] \Rightarrow A = 5, B = 2\).

Примеры
Входные данныеВыходные данные
1 5 3
1 2 3 4 5
1
2
10
1 2
2 3
5 2
2 2 0
0 0

                         

time 6000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя