D. Hackathon
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

VK очень часто проводит хакатоны, где программисты решают разные задачи. Сейчас VK готовит новый хакатон, в котором все желающие могут попробовать себя в разработке уникального полезного приложения или сервиса для одного из нескольких треков, в числе которых Финтех, Культура, Медиа и другие.

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

В этот раз VK организует новый хакатон, и на него на площадке проведения собрались $$$m$$$ участников. Для этих $$$m$$$ участников организаторы заказали $$$n$$$ пицц, которые на площадке расположили в ряд и пронумеровали от $$$1$$$ до $$$n$$$. Известно, что

  • каждая пицца состоит из бесконечного числа кусочков;
  • первый кусочек $$$i$$$-й пиццы имеет толщину теста $$$a_i$$$, а каждый следующий — на $$$1$$$ больше предыдущего (то есть $$$a_i + 1$$$, $$$a_i + 2$$$, и так далее);
  • наиболее привлекательными для участников кажутся кусочки с наименьшей толщиной теста;
  • любой участник может подойти к ряду с пиццами в произвольном месте, но после может перемещаться только влево (в сторону меньших номеров), чтобы не мешать другими участникам.

Периодически участники встают со своих мест и подходят к ряду пицц, чтобы взять один кусочек. Участник номер $$$i$$$ подходит к пицце с номером $$$s_i$$$ в момент времени $$$t_i$$$, после чего моментально находит кусочек пиццы с наименьшей толщиной теста среди пицц от $$$1$$$-й до $$$s_i$$$-й и начинает двигаться в его сторону. На перемещение между двумя соседними пиццами у каждого участника уходит одинаковое время — $$$v$$$ секунд. Несколько участников могут одновременно находиться около одной пиццы.

Как только участник подходит к пицце, кусочек в которой он выбрал, он его забирает и уходит обратно на свое место. Если несколько участников выбрали один и тот же кусочек и подошли к нему одновременно, кусочек забирает участник с меньшим номером. При этом если кусочек, на который рассчитывал участник, кто-то забрал, этот участник моментально выбирает новую цель по тому же алгоритму: он смотрит на все пиццы от первой до его текущей позиции, выбирает среди них минимум, и начинает двигаться к нему.

Формально этот процесс можно описать следующим образом. В каждое целое число секунд $$$t$$$:

  1. все участники, уже стоявшие в ряду в момент времени $$$t - 1$$$, сдвигаются на $$$\frac{1}{v}$$$ влево;
  2. все участники с $$$t_i = t$$$ подходят к пицце с номером $$$s_i$$$;
  3. время «останавливается»;
  4. определяются все участники, стоящие на таких целых позициях $$$p$$$, что $$$a_p = \min(a_1, a_2, \ldots, a_p)$$$;
  5. для каждого такого $$$p$$$ участник с минимальным номером, стоящий на позиции $$$p$$$, забирает кусочек пиццы толщиной $$$a_p$$$ и уходит; $$$a_p$$$ увеличивается на $$$1$$$;
  6. после того, как некоторые кусочки пицц забрали, могло случиться так, что у каких-то участников изменилась минимальная толщина кусочка, который они все еще могут получить, в таком случае процесс повторяется с шага 4;
  7. иначе, время «запускается заново» и процесс переходит на следующую секунду.

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

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

В первой строке ввода через пробел даны целые числа $$$n$$$, $$$m$$$ и $$$v$$$ — количество пицц, количество участников и время перемещения каждого участника между соседними пиццами ($$$1 \le n, m \le 10^5$$$; $$$1 \le v \le 10^9$$$).

Во второй строке через пробел перечислены $$$n$$$ целых чисел $$$a_i$$$ — толщина первого кусочка каждой пиццы ($$$0 \le a_i \le 10^9$$$).

В $$$i$$$-й из следующих $$$m$$$ строк даны параметры $$$i$$$-го участника: два целых числа $$$s_i$$$ и $$$t_i$$$, записанные через пробел — стартовое положение и время подхода участника к ряду пицц ($$$1 \le s_i \le n$$$; $$$0 \le t_i \le 10^9$$$).

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

Выведите $$$m$$$ строк, в $$$i$$$-й из которых выведите через пробел пару чисел: толщину теста в кусочке пиццы, полученном $$$i$$$-м участником, и время, которое участник потратит на то, чтобы до него дойти.

Система оценки

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

ПодзадачаБаллыОграничения Необходимые подзадачи
0–примеры из условия
18$$$\max(t_i) \le 10^4$$$; $$$n, m, v \le 100$$$0
210все $$$s_i$$$ равны и все $$$t_i$$$ равны
313$$$|a_i - a_j| \ge m$$$ для любых $$$i \ne j$$$
419$$$n, m \le 1000$$$0, 1
516$$$m \le 1000$$$0, 1, 4
634нет1 – 5
Примеры
Входные данные
5 3 1
1 2 3 4 5
5 1
3 2
2 4
Выходные данные
2 3
1 2
2 1
Входные данные
7 7 3
1 5 3 2 5 4 1
5 4
2 3
4 2
1 6
7 8
3 2
2 4
Выходные данные
2 3
1 3
5 6
2 0
1 0
4 6
3 3
Примечание

В первом примере события будут происходить в следующем порядке:

  1. Первый участник появляется на позиции $$$5$$$ в момент времени $$$1$$$; его цель — пицца номер $$$1$$$.
  2. К моменту времени $$$2$$$ первый участник находится на позиции $$$4$$$, а на позиции $$$3$$$ появляется второй участник. Оба будут двигаться к пицце номер $$$1$$$.
  3. В третью секунду не происходит никаких изменений, участники продолжают двигаться влево.
  4. В момент времени $$$4$$$: второй участник стоит около первой пиццы, первый и третий — вместе около второй. Второй учатник забирает кусочек пиццы толщины $$$1$$$, $$$a_1$$$ становится равно $$$2$$$.
  5. Первый и третий участник моментально видят, что кусочек пиццы толщины $$$1$$$ они уже не получат, а вот толщины $$$2$$$ они могут забрать на своей текущей позиции. Первый, как участник с меньшим номером, забирает $$$a_2 = 2$$$, после чего $$$a_2$$$ становится равно $$$3$$$.
  6. Оставшемуся третьему участнику остается только сдвинуться еще на $$$1$$$ влево и забрать $$$a_1 = 2$$$.