Выходные данные - О факультете

advertisement
2013
Национальный исследовательский университет
Мордовский государственный университет им. Н. П. Огарева
Факультет электронной техники
Факультет математики и информационных технологий
[ОТКРЫТАЯ ОЛИМПИАДА
ПО ПРОГРАММИРОВАНИЮ]
ОТКРЫТАЯ ОЛИМПИАДА ПО ПРОГРАММИРОВАНИЮ
19 мая, 2013
A. Морской бой
Входные данные: файл input.txt
Выходные данные: файл output.txt
Ограничение по времени: 2с
Ограничение по памяти: 64Мб
В Берлядском государственном университете полным ходом идет подготовка
к Открытому чемпионату по морскому бою 2013. Это ежегодное зрелищное
мероприятие собирает в одном здании тысячи участников, желающих
продемонстрировать свои навыки в этой увлекательной игре.
Организаторы соревнования не хотят ударить в грязь лицом, а хотят
продемонстрировать всем гостям, насколько развиты в университете современные
технологии. Они наконец-то решились отойти от традиционного бумажного
варианта игры и автоматизировать процесс. Лучшие программисты БГУ создали
систему проведения соревнований по морскому бою.
Интерфейс игрока включает в себя два игровых поля размером n × m. На
первом поле игрок расставляет свои корабли. А второе поле – поле его оппонента.
Естественно, расположение кораблей оппонента игроку не известно. Каждый игрок
и его оппонент имеют в своем распоряжении корабли следующих видов:
однопалубные, двухпалубные, … , k-палубные.
Размер игрового поля, количество видов кораблей, а так же количество
кораблей каждого вида, доступных игроку и его оппоненту, становится известным
игроку непосредственно перед началом игры.
Корабли могут располагаться на поле только в горизонтальном или
вертикальном положении. Расположение кораблей каким-либо иным способом (по
диагонали или углом) не допускается системой. Кроме того, никакие два корабля
не могут иметь общих граней.
Как только игроки закончили расстановку сил, начинается раунд. Игроки по
очереди делают ход – пытаются попасть в корабль противника. В случае удачной
попытки ход остается у текущего игрока, в противном случае переходит к
оппоненту. Игра заканчивается, когда один из игроков «уничтожил» все корабли
противника.
Все ходы игроков строго протоколируются системой и сохраняются на
сервере в следующем формате:
r n m k
b1 b2 … bk
Player1 x1 y1 v1
Player1 x2 y2 v2
Player2 x3 y3 v3
…
Здесь 0 < r < 1000000 – номер раунда; 0 < n, m ≤ 500 – размеры игрового
поля; 0 < k ≤ 20 – количество видов кораблей, доступных игрокам; 0 ≤ bi ≤ 125000 –
количество кораблей каждого вида, начиная с однопалубных; Player1, Player2 –
строковые идентификаторы игроков (длина каждого идентификатора не превышает
10 символов); 0 < xi ≤ n, 0 < yi ≤ m – координаты удара игрока; vi – результат удара
(«*» – игрок попал в корабль противника, «o» – игрок промахнулся).
ОТКРЫТАЯ ОЛИМПИАДА ПО ПРОГРАММИРОВАНИЮ
19 мая, 2013
Итак, Чемпионат по морскому бою 2013 закончился. Члены жюри, чтобы
убедиться в корректности результатов, решили провести проверку хода раундов по
сохраненным протоколам. При проверке было обнаружено, что в системе во время
соревнований произошел сбой. В протокол раундов по какой-то причине
сохранились ходы только одного из игроков. Программисты БГУ не растерялись и
выдали данный факт за элемент оптимизации. По их словам, чтобы определить
победителя раунда, достаточно знать ходы одного игрока.
Ваша задача – по заданному протоколу раунда определить, кто победил.
Входные данные: первая строка входного файла содержит числа r, n, m, k. На
следующей строке через пробел расположены k чисел bi. Каждая следующая строка
содержит один ход игрока в формате протокола.
Выходные данные: в выходной файл поместить имя игрока, если победил
игрок, чей протокол ходов сохранился. В противном случае вывести строку
«<имя_игрока>’s opponent» (без кавычек), где <имя_игрока> необходимо заменить
именем игрока из протокола.
Пример #1
Файл input.txt
1000 2 2 1
1
Ira 1 1 o
Ira 1 2 *
Файл output.txt
Ira
Пример #2
Файл input.txt
2000 3 2 2
1 1
Ira 2 1 o
Ira 2 2 o
Ira 1 2 *
Файл output.txt
Ira’s opponent
ОТКРЫТАЯ ОЛИМПИАДА ПО ПРОГРАММИРОВАНИЮ
19 мая, 2013
B. Цифровые пальмы
Входные данные: файл input.txt
Выходные данные: файл output.txt
Ограничение по времени: 2с
Ограничение по памяти: 64Мб
Ученые биологического факультета Берлядского государственного
университета получили грант на исследование выведенного ими нового вида
пальм. Новые пальмы могут достигать астрономических размеров. Поэтому
университету пришлось оборудовать лабораторию с бесконечным количеством
этажей. Высота одного этажа равна 109 – 1.
Пальме для полноценного развития требуются особые условия. Крайне
критичным является содержание воды в почве. Если объем воды, доступной
пальме, меньше определенного количества Vmin или больше определенного
количества Vmax, то пальма погибает.
В начале исследования скорость роста пальмы равна Speed0 ед./день. Пальму
поливают не более одного раза в день. Если в i-й день пальму полить, то к (i+1)ому дню скорость роста пальмы увеличивается в k1 раз. Если же пальму не полить,
то скорость роста к началу следующего дня уменьшается в k2 раз. Скорость роста
может быть представлена только целым числом. Если в результате применения
правил полива у величины скорости появляется дробная часть, то она просто
отбрасывается.
Ученым необходимо предоставить отчет о результатах исследования через t
дней. Их задача – составить такой оптимальный план полива пальмы, чтобы к
началу (t + 1)-го дня ее высота была максимально возможной. Естественно, пальма
не должна погибнуть.
Ваша задача – помочь ученым определить оптимальный план полива для
заданной пальмы, если известно, что высота этой пальмы перед началом
исследования была равна l0 ед.; количество воды в горшке с пальмой перед
началом исследования – V0; порция воды, расходуемая на один полив, равна Vполива;
порция воды, потребляемая пальмой за один день, равна Vпотр.
Входные данные: первая строка входного файла содержит числа Vmin, Vmax, V0,
Speed0, l0, k1, k2, Vполива, Vпотр, t. Все значения являются целыми числами из
диапазона [1; 1000]. Заведомо известно, что Vmin < Vmax, Vполива ≥ Vпотр, Vmin ≤ V0 ≤
Vmax. Гарантируется, что при заданных параметрах решение существует.
Выходные данные: в выходной файл вывести единственное число –
расстояние от вершины пальмы до потолка последнего достигнутого ею к (t + 1)му дню этажа при условии применения оптимального плана полива. Высотой
горшка, в котором выращивается пальма, пренебречь.
ОТКРЫТАЯ ОЛИМПИАДА ПО ПРОГРАММИРОВАНИЮ
19 мая, 2013
Пример #1
Файл input.txt
3 5 3 1 1 2 2 2 1 5
Файл output.txt
999999991
Примечание: в примере максимальное значение высоты достигается при
следовании следующему оптимальному плану полива: +–+–+. Здесь символ «+»
соответствует дню, в который пальма поливалась; символ «–» – дню без полива.
ОТКРЫТАЯ ОЛИМПИАДА ПО ПРОГРАММИРОВАНИЮ
19 мая, 2013
C. Фальшивая монета
Входные данные: файл input.txt
Выходные данные: файл output.txt
Ограничение по времени: 2с
Ограничение по памяти:64Мб
У Буратино есть N одинаковых по виду монет, среди которых одна
фальшивая и легче других по весу. Помогите Буратино определить, можно ли
найти такую фальшивую монету за k взвешиваний на чашечных весах без гирь.
Входные данные: входной файл содержит числа N (3 ≤ N ≤ 106) и k
(1 ≤ k ≤ 106).
Выходные данные: в выходной файл поместить строку YES, если за k
взвешиваний Буратино сможет найти фальшивую монету, или NO в противном
случае.
Пример #1
Файл input.txt
3 1
Файл output.txt
YES
Пример #2
Файл input.txt
9 1
Файл output.txt
NO
ОТКРЫТАЯ ОЛИМПИАДА ПО ПРОГРАММИРОВАНИЮ
19 мая, 2013
D. Цистерна
Входные данные: файл input.txt
Выходные данные: файл output.txt
Ограничение по времени: 0.5с
Ограничение по памяти: 64Мб
Ученые биологического факультета Берлядского государственного
университета получили грант на исследование выведенного ими нового вида
пальм. Пальме для полноценного развития требуются особые условия. Крайне
критичным является содержание воды в почве. Определение оптимального плана
полива – задача, требующая большого запаса воды.
Вода для полива хранится в большой цистерне. На первый день
исследования ученые залили в цистерну k1 литров воды. На второй день
исследования для полива пальмы из цистерны было взято k2 литров воды. Начиная
с третьего дня, ученые начали доливать в цистерну столько воды, сколько в ней
было два дня назад. Известно, что объем воды в цистерне к i-ому дню достиг K
литров.
Определите, сколько воды было в цистерне на первый и второй день.
Входные данные: входной файл содержит целые числа i (3 < i ≤ 20) и K
(1 < K ≤ 32767).
Выходные данные: в выходной файл вывести два числа: количество воды в
цистерне на первый и второй день.
Пример #1
Файл input.txt
6 25
Файл output.txt
5 2
ОТКРЫТАЯ ОЛИМПИАДА ПО ПРОГРАММИРОВАНИЮ
19 мая, 2013
E. Шпион
Входные данные: файл input.txt
Выходные данные: файл output.txt
Ограничение по времени: 2с
Ограничение по памяти: 64Мб
Секретному агенту Службы Внешней Разведки приказано добыть прототип
сверхсекретного оружия, попавший в руки террористов. Известно, что прототип
хранится в квартире одного из главарей. Агент выяснил номер этой квартиры – K1.
Он решил, что лучше всего проникнуть в квартиру через окно, спустившись на
веревке с крыши. Но для осуществления этого плана ему нужно знать номер этажа
N1 и номер подъезда P1.
Агент вспомнил, что много лет назад он уже бывал в этом доме. Здесь жила
его одноклассница. Он вспомнил ее номер квартиры K2, которая находилась в
подъезде P2 на этаже N2. Более того, он вспомнил, что количество квартир на
каждой лестничной площадке этого дома одинаково.
Помогите агенту определить значения N1 и P1, если количество этажей в
этом доме равно M.
Входные данные: входной файл содержит целые положительные числа K1, M,
K2, P2, N2. Все числа не превосходят 1000.
Выходные данные: в выходной файл вывести два числа: P1 и N1. Если при
заданных входных значениях числа P1 и N1 определить нельзя, то вывести -1.
Гарантируется, что искомые номер подъезда и этаж либо определяются
однозначно, либо таких чисел не существует.
Пример #1
Файл input.txt
89 20 41 1 11
Файл output.txt
2 3
Пример #3
Файл input.txt
3 2 2 2 1
Файл output.txt
-1
ОТКРЫТАЯ ОЛИМПИАДА ПО ПРОГРАММИРОВАНИЮ
Пример #2
Файл input.txt
1000 1 449 449 1
Файл output.txt
1000 1
19 мая, 2013
ОТКРЫТАЯ ОЛИМПИАДА ПО ПРОГРАММИРОВАНИЮ
19 мая, 2013
F. Вычислительная сеть
Входные данные: файл input.txt
Выходные данные: файл output.txt
Ограничение по времени: 2с
Ограничение по памяти:64Мб
Ученые биологического факультета Берлядского государственного
университета получили грант на исследование выведенного ими нового вида
пальм. Пальме для полноценного развития требуются особые условия. Крайне
критичным является содержание воды в почве. Определение оптимального плана
полива – задача, требующая большого количества вычислений, и компьютеры
биологического факультета по отдельности с ней справиться не могут.
Ученые инженерного факультета посоветовали объединить компьютеры в
вычислительную сеть. Для уменьшения затрат они разработали такую архитектуру
сети, в которой для того, чтобы компьютер был подключен к сети, достаточно
соединить его хотя бы с одним другим компьютером. Все компьютеры должны
быть соединены в сеть. Ученым известно, сколько метров кабеля потребуется для
соединения некоторого компьютера с некоторыми другими компьютерами, при
этом гарантируется, что этих знаний будет достаточно для построения сети.
Помогите ученым определить минимальное количество кабеля, которое им
потребуется для построения такой вычислительной сети.
Входные данные: первая строка входного файла содержит числа N –
количество известных ученым расстояний между компьютерами (1 ≤ N ≤ 104).
Следующие N строк содержат описание расстояний. Каждая такая строка содержит
три элемента, разделенных символом пробела: IP-адрес первого компьютера, IPадрес второго компьютера, и требуемое для их соединения количество кабеля s
(1 ≤ s ≤ 104).
Выходные данные: в выходной файл вывести единственное число –
минимальную длину кабеля, который потребуется для построения сети. Если сеть
построить невозможно, выведите число –1.
Пример #1
Файл input.txt
2
192.168.1.1 192.168.1.2 3
192.168.1.2 192.168.1.3 1
Файл output.txt
4
Download