12-й открытый турнир по программированию в Абакане
A. Овощи
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Фермер Джон очень любит выращивать овощи. Но есть их любит далеко не все, потому что некоторые овощи невкусные и понижают настроение, хотя некоторые наоборот — повышают.

Сейчас Джону нужно съесть блюдо, составленное из двух видов овощей. Блюдо содержит $$$A$$$ грамм первого и $$$B$$$ грамм второго вида. Джон знает, как меняет его настроение один грамм каждого овоща — первого на $$$X$$$, а второго на $$$Y$$$ е. н. (единиц настроения).

Джон — фермер и не силён в сложных вычислениях, помогите вычислить на сколько измениться его настроение после того, как он съест блюдо.

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

Первая строка содержит два целых числа $$$A$$$ и $$$B$$$ ($$$1 \leq A,B \leq 30\,000$$$).

Во второй строке содержатся два целых числа $$$X$$$ и $$$Y$$$ ($$$-30\,000 \leq X,Y \leq 30\,000$$$).

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

Выведите единственное целое число — на сколько е. н. измениться настроение Джона.

Примеры
Входные данные
2 3
2 -1
Выходные данные
1
Входные данные
1 1
1 -2
Выходные данные
-1

B. Таблица результатов
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

От вас требуется вывести таблицу результатов для списка участников и набранных ими очков.

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

Смотрите описание формата вывода и пример для большей информации.

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

Первая строка содержит целое число $$$n$$$ — количество участников ($$$1 \leq n \leq 50\,000$$$).

В следующих $$$n$$$ строках содержится $$$name_i$$$ и $$$p_i$$$ — имя участника и количество набранных им очков, записанные через пробел. $$$p_i$$$ — целое неотрицательное число, не превосходящее $$$10^6$$$.

Имя участника состоит только из букв латинского алфавита и имеет длину от $$$1$$$ до $$$20$$$. Гарантируется, что все имена различны.

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

Выведите таблицу результатов, состоящую из трёх столбцов.

Первый столбец должен иметь заголовок «Place». В нём отображаются места, которые занимают участники. Если несколько участников имеют одинаковое количество очков, то они разделяют общее место, которое отображается как диапазон. Смотрите пример для понимания.

Второй столбец имеет заголовок «Name» и служит для отображения имени, второй — «Score», для отображения очков участника.

Ширина каждого столбца должна быть равна длине максимальной ячейки этого столбца.

Первый столбец должен быть выровнен по правому краю, остальные два — по левому.

Пустоты в ячейках следует заполнять символом «.» (точка).

Границы ячеек обозначаются символом «|» (ASCII-код 124)

Пример
Входные данные
8
Petr 100
tourist 100
Bredor 9999
dZ 5
dx 5
Dy 5
pressF 0
user 33
Выходные данные
|Place|Name...|Score|
|....1|Bredor.|9999.|
|..2-3|Petr...|100..|
|..2-3|tourist|100..|
|....4|user...|33...|
|..5-7|dx.....|5....|
|..5-7|Dy.....|5....|
|..5-7|dZ.....|5....|
|....8|pressF.|0....|

C. Changelog generator
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

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

Пусть одно изменение затронуло $$$n$$$ параметров, которые до патча имели значения $$$a_1, a_2, ..., a_n$$$, а после патча стали $$$b_1, b_2, ..., b_n$$$. Значения всегда являются целыми числами. Вам необходимо определить, что произошло с параметрами, а именно:

  • «Unchanged» — каждый параметр остался прежним.
  • «Increased» — каждый параметр либо увеличился, либо остался неизменным.
  • «Reduced» — каждый параметр либо уменьшился, либо остался неизменным.
  • «Rescaled» — параметры потерпели изменения, но не подходящие под критерии выше.
Входные данные

Первая строка содержит целое число $$$n$$$ — количество параметров ($$$1 \leq n \leq 1\,000$$$).

Вторая строка содержит $$$n$$$ целых чисел $$$a_i$$$ — старые значения параметров.

В третьей строке содержится $$$n$$$ целых чисел $$$b_i$$$ — новые значения параметров.

$$$0 \leq a_i, b_i \leq 10^9$$$.

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

Выведите одно из слов, описанных выше, характеризующее тип изменения.

Примеры
Входные данные
4
55 50 45 40
50 45 40 35
Выходные данные
Reduced
Входные данные
3
550 675 800
600 700 800
Выходные данные
Increased
Входные данные
4
50 55 60 65
40 50 60 70
Выходные данные
Rescaled
Входные данные
3
3 1 2
3 1 2
Выходные данные
Unchanged

D. Маленький Декарт
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Маленький Декарт получил в подарок последовательность целых чисел от $$$1$$$ до $$$n$$$, расположенных так, что число $$$i$$$ стоит на $$$i$$$-м месте.

Не понятно от чего, Декарту сразу захотелось брать отрезки внутри последовательности и что-нибудь с ними делать. Быстро обнаружилось, что маленький Декарт умеет только два типа действий:

  • «reverse i j» — перевернуть порядок чисел, которые находятся в отрезке с $$$i$$$ по $$$j$$$.
  • «inverse i j» — умножить каждое число с отрезка от $$$i$$$ до $$$j$$$ на $$$-1$$$.

В обоих случаях $$$1 \leq i \leq j \leq n$$$.

Так Декарт провёл все выходные, о чём рассказал своему другу Поликарпу. Маленький Декарт записал все действия в порядке их применения к последовательности и показал Поликарпу. Если Поликарп правильно скажет, какое число стоит на месте $$$pos$$$ после всех операций, то Декарт даст ему последовательность на выходные.

Поликарп очень хочет поиграть с числами, но увидев большой список он побледнел. Поэтому он просит вас о помощи — по списку операций определите число на требуемой позиции.

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

В первой строке содержатся два целых числа $$$n$$$ и $$$m$$$ — количество чисел в последовательности и количество действий ($$$1 \leq n \leq 10^9$$$; $$$0 \leq m \leq 10^5$$$).

В каждой из следующих $$$m$$$ строках содержится описание очередного действия.

В последней строке содержится целое число $$$pos$$$ ($$$1 \leq pos \leq n$$$).

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

Выведите число, которое находится на месте $$$pos$$$ после всех действий.

Примеры
Входные данные
5 4
inverse 1 3
reverse 2 5
reverse 1 3
inverse 2 4
3
Выходные данные
1
Входные данные
3 2
reverse 1 2
inverse 2 3
2
Выходные данные
-1
Входные данные
3 2
inverse 1 2
reverse 2 3
2
Выходные данные
3
Примечание

В первом примере последовательность меняется следующим образом:

$$$(1, 2, 3, 4, 5) \rightarrow (-1, -2, -3, 4, 5) \rightarrow (-1, 5, 4, -3, -2) \rightarrow (4, 5, -1, -3, -2) \rightarrow (4, -5, 1, 3, -2)$$$

E. Тройники
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

У вас уже суммарно есть $$$k$$$ тройников (электрических разветвителей на три розетки). Каждый тройник можно подключить либо в розетку, либо в другой тройник.

Какое минимальное количество дополнительных тройников нужно приобрести, чтобы обеспечить каждый ноутбук электричеством?

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

В единственной строке содержатся два целых числа $$$n$$$ и $$$k$$$.

$$$1 \leq n \leq 10^9$$$.

$$$0 \leq k \leq 10^9$$$.

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

Выведите единственное число — ответ на задачу.

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

F. Сигнатура
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Рассмотрим последовательность целых положительных чисел $$$a_i$$$.

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

Например, сигнатурой последовательности $$$[1,1,2,6,6,6,1]$$$ является $$$[2,1,3,1]$$$.

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

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

Первая строка содержит целое число $$$n$$$ — размер сигнатуры ($$$1 \leq n \leq 10^5$$$).

Вторая строка содержит $$$n$$$ целых положительных чисел $$$s_k$$$, сумма которых не превосходит $$$10^6$$$.

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

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

Если ответов с минимальной суммой несколько, разрешается вывести любой.

Пример
Входные данные
3
1 2 3
Выходные данные
1 2 2 1 1 1 

G. Пирог
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

Гости оказались привередливыми и требуют, чтобы вы разрезали пирог определённым способом. А именно: зафиксировать точку внутри прямоугольника и сделать четыре разреза от этой точки до каждого угла прямоугольника. Таким образом, пирог разделится на четыре треугольных куска.

Но этого оказалось мало! Каждый гость хочет кусок определённого размера, а именно, $$$i$$$-й гость хочет $$$p_i$$$ процентов пирога.

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

Будем считать, что левый-нижний угол пирога имеет координаты $$$(0,0)$$$, а правый-верхний $$$(A,B)$$$. Точка задаётся координатами $$$(X,Y)$$$ так, что $$$0 \leq X \leq A$$$ и $$$0 \leq Y \leq B$$$.

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

В первой строке содержатся два целых числа $$$A$$$ и $$$B$$$ ($$$1 \leq A, B \leq 100$$$).

Вторая строка содержит четыре целых числа $$$p_1$$$, $$$p_2$$$, $$$p_3$$$ и $$$p_4$$$ ($$$1 \leq p_i \leq 99$$$; $$$p_1 + p_2 + p_3 + p_4 = 100$$$).

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

Если пирог невозможно разрезать требуемым способом, то выведите «NO».

Иначе в первую строку выведите «YES», во вторую — $$$X$$$, а в третью — $$$Y$$$ (координаты точки разбиения).

Если способов выбрать точку существует несколько, разрешается вывести любой.

Примеры
Входные данные
3 4
25 25 25 25
Выходные данные
YES
1.5
2.0
Входные данные
1 1
33 33 33 1
Выходные данные
NO