Квалификационный тур Уральского четвертьфинала Чемпионата мира по программированию 2019
A. Строительство башни
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

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

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

В первой строке содержится целое число $$$N$$$ — бюджет Васи на покупку железа и дерева $$$(1\leq N\leq 10^9)$$$.

Во второй строке содержится целое число $$$X$$$ — стоимость килограмма железа $$$(1\leq X\leq 10^9)$$$.

В третьей строке содержится целое число $$$Y$$$ — стоимость килограмма дерева $$$(1\leq Y\leq 10^9)$$$.

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

В единственной строке выведите одно число — максимальное количество этажей, которое сможет построить Василий.

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

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

В УрФУ проводится турнир по игре Камень-ножницы-бумага-ящерица-Спок. Вас назначили судьей. В игре участвуют 2 человека. Каждый из них может в качестве своего хода выбрать один из пяти вариантов:

  • Камень (Rock)
  • Ножницы (Scissors)
  • Бумага (Paper)
  • Ящерица (Lizard)
  • Спок (Spock)
Правила игры следующие:
  • Ножницы режут бумагу
  • Бумага заворачивает камень
  • Камень давит ящерицу
  • Ящерица травит Спока
  • Спок ломает ножницы
  • Ножницы отрезают голову ящерице
  • Ящерица ест бумагу
  • Бумага содержит улики против Спока
  • Спок испаряет камень
  • Камень затупляет ножницы
Если ходы двух людей совпадают, то объявляется ничья.

Для наглядности посмотрите на схему ниже. Стрелки на ней идут от побеждающих к проигрывающим.

Даны ходы двух людей. Ваша задача — определить исход поединка.

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

В первой строке вводится ход первого игрока - это одно из пяти слов:

  • Rock
  • Scissors
  • Paper
  • Lizard
  • Spock
Во второй строке в таком же формате вводится ход второго игрока.
Выходные данные

Если первый игрок победит второго, то выведите «First» (без кавычек).

Если второй игрок победит первого, то выведите «Second» (без кавычек).

Если же будет ничья, то выведите «Tie» (без кавычек).

Примеры
Входные данные
Rock
Paper
Выходные данные
Second
Входные данные
Rock
Rock
Выходные данные
Tie
Входные данные
Lizard
Spock
Выходные данные
First

Statement is not available in English language
D. Артем в армии
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Артем не поступил в университет, так что ему пришлось отправиться в армию. Для обучения новобранцев выделили три танка с номерами от 1 до 3. Изначально команде Артема поручили управлять $$$k$$$-ым танком. Но сегодня вышло $$$n$$$ приказов. В каждом приказе написаны числа $$$a_i$$$ и $$$b_i$$$, это означает, что команды, управляющие танками с номерами $$$a_i$$$ и $$$b_i$$$ должны поменяться танками. Приказы выполняются поочередно в порядке от первого к последнему. В каком танке после выполнения всех приказов будет сидеть Артем?

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

В первой строке через пробел вводятся целые числа $$$n, k$$$ — количество приказов и начальный танк Артема $$$(1\leq n\leq 10^5, 1\leq k\leq 3)$$$.

В $$$i$$$-й из следующих $$$n$$$ строк содержатся два целых числа $$$a_i, b_i$$$ — содержание $$$i$$$-го приказа $$$(1\leq a_i, b_i\leq 3, a_i \neq b_i)$$$.

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

Выведите единственное число — номер танка, в котором будет находится Артем после $$$n$$$ выполнения приказов.

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

В примере изначально Артем находится в первом танке. После выполнения первого приказа, команды на первом и втором танках меняются местами. Теперь Артем находится во втором танке. После выполнения второго приказа, команды второго и третьего танков меняются местами, Артем переходит со второго танка на третий. Поэтому правильный ответ — 3.

E. Отложенные операции
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Дима выучил ленивое дерево отрезков, он был восхищен идеей отложенных операций, которая там используется. Он решил использовать эту тактику для решения домашних работ в течение $$$n$$$ дней. У Димы в вузе есть $$$k$$$ разных предметов, пронумерованных от 1 до $$$k$$$. В каждый из $$$n$$$ дней ему приходит задание по одному из этих предметов. То есть в $$$i$$$-ый день он получает задание $$$a_i$$$, где $$$a_i$$$ - номер предмета по которому пришло задание в $$$i$$$-ый день

Дима может провести свой день двумя способами. Он может сделать все накопившиеся домашние работы по одному из $$$k$$$ предметов или не делать ничего.

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

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

В первой строке через пробел вводятся целые числа $$$n$$$ и $$$k$$$ — количество дней и количество различных предметов $$$(1\leq n, k\leq 10^5)$$$.

Во второй строке дано $$$n$$$ чисел, разделённых пробелами, где $$$i$$$-е число равно $$$a_i$$$ — номеру предмета, по которому дано задание в $$$i$$$-ый день $$$(1\leq a_i\leq k)$$$. Возможна ситуация, когда задания по некоторым предметам не выдаются Диме ни разу.

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

В единственной строке выведите $$$n$$$ чисел, разделённых пробелами, где $$$i$$$-е число должно быть равно 0, если Дима должен бездельничать в $$$i$$$-й день, либо номеру предмета, если Диме стоит выполнить все домашние задания по данному предмету в этот день. Если существует несколько возможных вариантов ответа, выведите любой.

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

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

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

Statement is not available in English language
G. Уральские блинчики
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

После квалификационного тура довольные, но голодные программисты зашли в ресторан «Уральские блинчики» и заказали себе несколько фирменных блинчиков. Для того чтобы приготовить блинчик, повар должен прожарить каждую из его сторон на сковороде.

Фирменный блинчик имеет форму квадрата со стороной $$$1$$$. Сковорода повара имеет форму прямоугольника ширины $$$m$$$ и высоты $$$n$$$. Она разбита на $$$n \cdot m$$$ клеток. К сожалению, некоторые из клеток подгорели, и в них нельзя класть блинчики. При этом не подгоревшие клетки образуют связную область, то есть из любой не подгоревшей клетки можно попасть в любую другую, перемещаясь каждый раз в соседнюю неподгоревшую клетку. Соседними называются такие две клетки, что либо они находятся в одной и той же строке и в соседних столбцах, либо в одном и том же столбце и в соседних строках.

В некоторые из не подгоревших клеток повар положил блинчики (не более одного на клетку), и они уже поджарились с одной стороны. Теперь их нужно перевернуть на другую сторону. Для этого можно поддеть любой блинчик лопаткой снизу и перевернуть его, переместив при этом на соседнюю клетку. Перемещать блинчики за пределы сковороды нельзя. Естественно, если перевернуть блинчик дважды, он снова будет расположен прожаренной стороной вниз. Если переместить блинчик на клетку, где уже лежит другой блинчик, они образуют стопку. Одновременно на одной из клеток могут находится сколько угодно блинчиков, но переворачивать можно только верхний из них.

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

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

В первой строке через пробел даны целые числа $$$n$$$ и $$$m$$$ — размер сковороды ($$$1 \le n, m \le 100$$$).

Далее даны $$$n$$$ строк длины $$$m$$$ каждая, описывающих сковороду. Строки состоят из символов «.» (код $$$46$$$), «#» (код $$$35$$$) и «P» (код $$$80$$$). Символ «.» обозначает, что клетка свободна; символ «#» обозначает, что клетка подгоревшая; символ «P» обозначает, что клетка занята блинчиком.

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

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

Если повар сможет перевернуть все блинчики на неподжаренную сторону, следуя условиям задачи, в единственной строке выведите «YES» (без кавычек). Иначе, выведите «NO» (без кавычек).

Примеры
Входные данные
1 3
P.P
Выходные данные
NO
Входные данные
2 2
PP
PP
Выходные данные
YES
Входные данные
2 2
PP
P#
Выходные данные
NO

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

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

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

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

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

В единственной строке через пробел вводятся целые числа $$$A$$$ и $$$B$$$ — числа на первом и втором счётчиках соответственно ($$$1 \le A, B \le 10^9$$$).

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

В единственной строке выведите одно целое число — количество раз, когда числа на счётчиках будут различаться в целое число раз до того, как один из них достигнет нуля.

Примеры
Входные данные
3 30
Выходные данные
2
Входные данные
16 4
Выходные данные
4

I. Персеантовка
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод
Иезвтсен факт, что елси имзнеить продяок бкув вунрти солва, члевоек всё ранво сомежт пноять сымсл тескта, елси превая и полсендяя бувка осатунтся на метсе.

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

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

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

В первой строке вводится текст, полученный после некоторой перестановки символов некоторых слов. Гарантируется, что суммарная длина текста не превышает $$$5\cdot 10^5$$$ символов.

В следующей строке вводится целое число $$$n$$$ — количество слов в словаре $$$(1\leq n\leq 5\cdot 10^5)$$$.

Каждая из следующих $$$n$$$ строк содержит одно слово из словаря. Гарантируется, что суммарная длина всех слов в словаре не превышает $$$5\cdot 10^5$$$ символов. Также гарантируется, что все слова в словаре различны.

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

Выведите единственную строку — исходный текст до перестановки символов. Если существует несколько возможных вариантов ответа, выведите любой из них. Если не существует ни одного корректного варианта ответа, выведите «No solution» (без кавычек).

Примеры
Входные данные
hello wolrd.
2
hello
world
Выходные данные
hello world.
Входные данные
hello wlrd.
2
hello
world
Выходные данные
No solution
Входные данные
tihs is vrey sceret txet.
7
text
secret
serect
scret
is
very
this
Выходные данные
this is very secret text.

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

«Катамари» — это магический шар, к которому прилипает всё, что его касается. Он катится по Земле, собирая всё большие и большие объекты, пока не вырастет достаточно громадным, чтобы стать новым небесным телом.

В этот раз катамари занесло на прямоугольное клетчатое поле размера $$$n$$$ строк на $$$m$$$ столбцов. Будем говорить, что клетка, находящаяся в строке $$$i$$$ в столбце $$$j$$$, имеет координаты $$$(i, j)$$$ ($$$1 \le i \le n$$$, $$$1 \le j \le m$$$). В каждой клетке расположен какой-нибудь объект. Размер объекта, находящегося в клетке с координатами $$$(i, j)$$$, равен $$$a_{ij}$$$. При этом мир настолько разнообразен, что для любого числа существует не более трёх объектов такого размера.

Ваша задача — прицепить все объекты, перекатывая катамари по полю. Начать можно в любой клетке. Две клетки называются соседними, если номера их столбцов совпадают, а номера строк отличаются на единицу, либо если номера их строк совпадают, а номера столбцов отличаются на единицу. Перемещаться из клетки можно только в соседнюю клетку, выходить за пределы поля нельзя. При этом одну клетку нельзя посещать дважды.

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

Составьте такой маршрут для катамари, чтобы каждый объект был собран, и все ограничения были выполнены.

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

В первой строке через пробел вводятся два целых числа $$$n$$$ и $$$m$$$  — размеры поля ($$$1 \leq n, m \leq 100$$$).

Следующие $$$n$$$ строк описывают поле. В каждой из них содержится $$$m$$$ целых чисел $$$a_{ij}$$$, разделённых пробелом ($$$1 \leq a_{ij} \leq 10^4$$$) — размеры объектов в соответствующих клетках.

Гарантируется, что для любого числа существует не более трёх объектов такого размера.

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

Если составить требуемый маршрут невозможно, в единственной строке выведите $$$-1$$$.

Иначе, выведите $$$n \cdot m$$$ строк. В $$$k$$$-й строке через пробел выведите два числа $$$i_k$$$ и $$$j_k$$$  — координаты $$$k$$$-й клетки маршрута. Маршрут должен обходить всё поле, не посещая одну клетку дважды, а размеры объектов в порядке обхода должны составлять неубывающую последовательность. Если возможных ответов несколько, выведите любой из них.

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

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

На соревнованиях по программированию не раз встречались задачи про Малыша и Карлсона, делящих между собой сладости. Чтобы не повторяться, каждый автор задачи хочет добавить в своё условие изюминку, которая бы выделила задачу на фоне остальных. То Малыш и Карлсон делят многослойный торт, то они играют в игру на плитке шоколада. Дошла очередь и до самих героев: какую задачу можно придумать, если бы Малыш и Карлсон жили в параллельной вселенной?

Малыш и Карлсон из параллельной вселенной — образованные и воспитанные люди. Они не страдают от лишнего веса, и каждый из них готов отдать другу половину всех сладостей. Сегодня они выиграли в командном соревновании по программированию большой торт (в параллельной вселенной команды состоят из двух человек). Торт имеет форму выпуклого $$$N$$$-угольника. Малыш и Карлсон тут же решили поделить его на две равные по площади части, причём сделать это надо с математической точностью.

Для этого они ввели декартову систему координат и измерили координаты вершин торта. Все координаты оказались целыми числами. Осталось провести прямолинейный разрез. Чтобы не допустить даже малейшей погрешности, было принято решение выбрать две точки $$$A$$$ и $$$B$$$ с целочисленными координатами и сделать разрез по прямой, проходящий через эти две точки.

После долгого соревнования Малыш и Карлсон устали, поэтому они обратились к своим братьям и сёстрам из параллельной вселенной за помощью. Найдите две различные точки $$$A$$$ и $$$B$$$, чтобы прямая, проходящая через них, разделила торт на две равные по площади части. Координаты точек должны быть целыми числами, не превышающими $$$10^{18}$$$ по модулю.

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

В первой строке находится целое число $$$N$$$  — количество вершин многоугольника ($$$3 \leq N \leq 10^3$$$).

В следующих $$$N$$$ строках через пробел записаны целые числа $$$x_i$$$ и $$$y_i$$$ — координаты $$$i$$$-й вершины многоугольника ($$$-10^5 \leq x_i, y_i \leq 10^5$$$).

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

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

Если решения не существует, в единственной строке выведите $$$-1$$$.

Иначе, выведите две строки. В первой строке через пробел выведите целые числа $$$x_a$$$ и $$$y_a$$$ — координаты точки $$$A$$$ ($$$-10^{18} \le x_a, y_a \le 10^{18}$$$). Во второй строке в аналогичном формате выведите координаты точки $$$B$$$. Точки не должны совпадать.

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