2013-2014 Командная олимпиада Казахстанского филиала МГУ (весенний тур)
A. Ayat and the film
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Аят решил посмотреть какой-нибудь хороший фильм. Он взял пустую флешку, чтобы скопировать на нее фильм с лучшим рейтингом по версии AYAT FILM RATING. Выяснилось, что флешка не резиновая, и далеко не каждый фильм помещается на нее. Поэтому Аят решил выбрать фильм с лучшим рейтингом, который поместится на флешку. Какой фильм он из этого списка выбрал? Или Аят, взгрустнув по поводу несостоявшегося киносеанса, саботированного маленькой флешкой, пошел на пару физической культуры?

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

На первой строке целое число $$$S$$$ — размер флешки (от 1 до 30000). На второй строке целое число $$$N$$$ — количество фильмов в списке (от 1 до 100). Далее $$$N$$$ пар целых чисел: $$$R_i$$$ — рейтинг $$$i$$$-го фильма (от 1 до 100) и $$$V_i$$$ — размер $$$i$$$-го фильма (от 1 до 100000). Рейтинги у всех фильмов различны.

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

Целое число $$$K$$$ — номер фильма с максимальным рейтингом, который помещается на флешке. Если Аят не смог выбрать фильм, выведите $$$-1$$$.

Примеры
Входные данные
1000
2
100 2000
50 4700
Выходные данные
-1
Входные данные
4000
5
100 4700
20 6200
50 1400
40 700
55 4200
Выходные данные
3

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

Команда Big-dipper — это Денис, Адиль и Надира. Но это никак не помогает решить задачу.

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

Два целых числа $$$A$$$ и $$$B$$$ (оба от 1 до 1000).

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

Одно целое число.

Примеры
Входные данные
7 2
Выходные данные
95
Входные данные
2 2
Выходные данные
40
Входные данные
235 152
Выходные данные
38783
Входные данные
15 25
Выходные данные
0

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

Маша и Вадим написали по строке одинаковой длины $$$N$$$ из букв латинского алфавита: $$$a$$$ и $$$b$$$. Когда они сравнили строки, выяснилось, что строки отличаются. «Так не пойдет! Сейчас мы сделаем из них одинаковые строки!» — сказал тот, кто повыше, пошире и носит очки. Они решили привести обе строки к общему виду. Воодушевлённый воспоминаниями годичной давности о методах сортировки, Вадим придумал следующие правила «приведения»: за один ход можно переставить две соседних буквы в одной из строк, если эти буквы различны (то есть $$$ab \rightarrow ba$$$ или $$$ba \rightarrow ab$$$). «С такими правилами ты точно не приведешь строки $$$aa$$$ и $$$bb$$$ к одинаковой!» — ответила та, кто пониже, стройней и с хорошим зрением. Проверьте, смогут ли ребята привести данные строки к общему виду, и если смогут, то какое минимальное количество ходов понадобится?

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

Целое число $$$N$$$ — длина строк (от 1 до 100). Две строки из $$$N$$$ латинских символов $$$a$$$ и $$$b$$$.

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

Целое число $$$K$$$ — минимальное количество ходов, необходимое для приведения к общему виду. Если строки привести нельзя, выведите $$$-1$$$.

Примеры
Входные данные
2
aa
bb
Выходные данные
-1
Входные данные
10
aaaaaaaaab
baaaaaaaaa
Выходные данные
9
Входные данные
6
baaabb
abbaab
Выходные данные
3

D. Dima's divided numbers
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Диму попросили написать программу, которая перебирает все неотрицательные числа, состоящие из не более, чем $$$M$$$ цифр. Когда ему давали задание, то ни слова не сказали про систему счисления, в которой должны быть записаны числа. Поэтому хитрый Дима выбрал двоичную систему счисления, чтобы программа работала как можно быстрее (подходящих чисел в ней всего лишь $$$2^M$$$). Как только довольный Дима доложил о выполнении задания, ему дали следующее: написать такую же программу, но чтобы она работала параллельно на кластере из $$$D$$$ компьютеров, причем каждое число должно быть получено ровно одним компьютером ровно один раз. Так как Дима в глубине души за равенство всех, всего и вся, то он решил разделить числа между компьютерами так, чтобы все компьютеры перебрали одинаковое количество чисел. Выяснилось, что далеко не для любой системы счисления можно распределить все нужные ему числа поровну между $$$D$$$ компьютерами. Тогда он решил найти минимальное основание системы счисления, для которой это можно сделать. Помогите Диме!

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

Два целых числа: $$$M$$$ — максимальное количество цифр в числе (от 1 до $$$10^9$$$) и $$$D$$$ — количество компьютеров (от 2 до $$$10^9$$$).

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

Целое число $$$K$$$ — минимальное основание системы счисления ($$$K \gt 1$$$), в которой все числа из не более, чем $$$M$$$ цифр, можно разделить поровну между $$$D$$$ компьютерами.

Примеры
Входные данные
3 1000
Выходные данные
10
Входные данные
2 12
Выходные данные
6
Входные данные
4 48
Выходные данные
6

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

В отличии от Димы у Вани другая позиция по выбору основания системы счисления. Он считает, что двоичная система счисления — лучшая система счисления в мире. После курса дискретной математики это мнение настолько укрепилось, что он решил в десятичной системе счисления ввести «двоичное округление» для чисел из устаревшей десятичной системы счисления в передовую двоичную. Суть округления довольна проста: любое натуральное число заменяется на ближайшее, в записи которого присутствуют только цифры 0 и 1. Напишите программу, которая «округляет» числа.

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

Целое число $$$N$$$ (от 1 до $$$10^{100}$$$). Ввод заканчивается точкой.

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

Целое число $$$K$$$ — число, полученное после «двоичного округления» без ведущих нулей. Если ближайших числа два, то округлять можно в любую сторону.

Примеры
Входные данные
5556.
Выходные данные
10000
Входные данные
1011556.
Выходные данные
1011111
Входные данные
101101234567890.
Выходные данные
101101111111111

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

Андрей и Ануар играют в игру с неадекватным ферзем на прямоугольной шахматной доске. Неадекватный ферзь может ходить вправо, вниз или вправо-вниз по диагонали на любое количество клеток (только в 3 направлениях, а не в 8, как в нормальных шахматных правилах). Хоть этот ферзь и неадекватен, но с правилами этикета знаком: он не может бить другие фигуры и ходить сквозь них. В начале игры ферзь стоит в левом верхнем углу доски. Ходить начинает Андрей. Проигрывает тот, кто не может сделать ход. Кто выиграет при оптимальной игре обоих игроков?

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

Целые числа $$$N$$$, $$$M$$$ — количество строк и столбцов доски соответственно (оба числа от 1 до 100). Далее матрица $$$N \times M$$$, состоящая из символов '0' (ноль — свободные клетки) и 'x' (икс — клетки, занятые другими фигурами). Гарантируется, что левый верхний угол помечен свободным.

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

Строка 'Andrew' (без кавычек), если выиграет Андрей. Строка 'Anuar' (без кавычек), если выиграет Ануар.

Примеры
Входные данные
3 6
000000
0xxx00
000000
Выходные данные
Andrew
Входные данные
1 1
0
Выходные данные
Anuar
Входные данные
4 4
00x0
0x00
x000
0000
Выходные данные
Anuar

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

Никто уже и не помнит, какой был праздник, но суть была в торте, который Илья принес домой. На празднике было трое друзей, и Илья в магазине выбрал торт в форме прямоугольника (его легко разделить на 4 равных части). Но, транспортируя торт из магазина домой, Илья споткнулся и торт из красивого ровного прямоугольника превратился в непонятный выпуклый четырехугольник. Все 4 вишни, что украшали торт, скатились к вершинам четырехугольника так, что в каждой вершине оказалось по одной вишне. Когда Илья принес торт домой, то перед ним встала непростая задача: как его разделить на 4 равных по площади части (это же не прямоугольник на 4 равных части делить)? Но Илья не растерялся и абстрагировался! Он провел через центр квадратного стола 2 оси параллельно краям стола (хотя бы с делением стола на 4 равных части не возникло проблем) и положил торт так, что все 4 вишни оказались в разных четвертях. Внимательно присмотревшись, Илья понял, что на торте есть такая особенная точка $$$M$$$, что если через нее провести две прямые, параллельные осям, то все 4 полученных кусочка будут в форме четырехугольников, равны по площади и на каждом будет ровно по одной вишне. Осталось найти эту точку. Помогите Илье!

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

8 целых чисел ($$$X_1$$$, $$$Y_1$$$, $$$X_2$$$, $$$Y_2$$$, $$$X_3$$$, $$$Y_3$$$, $$$X_4$$$, $$$Y_4$$$), которые задают 4 последовательных вершины четырехугольника. Гарантируется, что N-я вершина лежит в N-й четверти ($$$N=1, 2, 3, 4$$$). Модуль каждого числа не менее 1 и не более 100.

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

Два вещественных числа с точностью не менее 2 знаков после запятой — координаты точки $$$M$$$, через которые проведены разрезы. Гарантируется, что решение существует.

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

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

Двумерная металлическая решетка имеет вид прямоугольника $$$(N-1) \times (M-1)$$$. В узлах решетки находятся атомы, которые пронумерованы от $$$(1, 1)$$$ — левый верхний до $$$(N, M)$$$ — правый нижний. У каждого атома есть некоторое число электронов, причем на решетке есть ровно один электрон–непоседа на атоме $$$(i_1, j_1)$$$ и один электрон–ускоритель $$$(i_2, j_2)$$$. Все электроны, кроме непоседы, всегда остаются на своих атомах. Каждую секунду электрон-непоседа переходит из атома $$$A$$$ на соседний по горизонтали или вертикали атом $$$B$$$, если число электронов в атоме $$$B$$$ на 1 меньше, чем в $$$A$$$ (с учетом самого электрона–непоседы). Все атомы, на которых появляется электрон $$$A$$$, он отмечает. Если электрон-непоседа добирается до атома, на котором находится электрон-ускоритель, то электрон-непоседа становится сильно–заряженным и теперь может перепрыгивать через один атом. Электрон делает прыжок из атома $$$A$$$ в атом $$$B$$$ через атом $$$M$$$, если:

  1. $$$A$$$, $$$M$$$, $$$B$$$ лежат на прямой параллельной сторонам решетки;
  2. $$$B$$$ содержит на 1 электрон меньше чем А.
При этом атом M электрон-непоседа не отмечает. Какое наибольшее количество атомов сможет отметить электрон-непоседа?
Входные данные

Два целых числа $$$N$$$, $$$M$$$ — количество строк и столбцов решетки (оба числа от 1 до 100). Матрица $$$N \times M$$$, состоящая из целых чисел $$$A_{ij}$$$, — количество электронов на позиции $$$(i, j)$$$ (все элементы матрицы от 1 до 100). После матрицы даны две пары целых чисел $$$(i_1, j_1)$$$ и $$$(i_2, j_2)$$$ — координаты электрона–непоседы и электрона–ускорителя (номер строки от 1 до $$$N$$$, столбца от 1 до $$$M$$$).

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

Одно целое число — наибольшее возможное количество отмеченных атомов.

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