Уcловия

advertisement
Школа Юных Программистов
Салехард, 20 января 2012
Задача А. Перекати-кубик
Имя входного файла: cube.in
Имя выходного файла: cube.out
Ограничение по времени: 2 секунды
Ограничение по памяти: 256 МБ
В один из летних дней, Олег обнаружил в кармане игральную кость. Игральная кость обычно
выполнена в виде шестигранного кубика с нанесёнными на его стороны числами от одного до
шести, причём сумма чисел на противоположных гранях должна равняться семи. Так как Олег
любил решать различные задачи, он сразу придумал новую игру «Перекати-кубик».
Игрок, который ходит первым, устанавливает кубик на одну из граней и соответствующее
число на нижней грани прибавляется к его очкам. Второй игрок может повернуть кубик на одну из
смежных граней, по отношению к выбранной. Соответствующее новое число прибавится к очкам
второго игрока. Игроки ходят по очереди, причем каждая грань в игре может быть использована в
качестве новой только один раз. Игра заканчивается, когда все грани были использованы или один
из игроков не может сделать ход. Побеждает игрок, набравший максимальную сумму. В случае
равенства очков объявляется ничья.
Олег уже поставил кубик на грань с единицей и предложил Гене сыграть с ним. Только он не
уверен, правильно ли сделал начальный ход.
Ваша задача – для заданного начального положения определить, кто из игроков победит при
оптимальной стратегии обоих игроков.
Исходные данные
В единственной строке задается число от 1 до 6 – цифра, изображенная на той грани кубика,
на которую ее поставил Олег.
Результат
Единственная строка выходного файла должна содержать число «-1» в том случае, если
победу одержит Олег, «1» в том случае, если выиграет Гена, «0» – если игра закончится в ничью.
Пример
Input
Output
6
-1
Критерии оценки
Вы можете считать, что за каждый рассмотренный случай (за исключением исходного
примера) ваше решение получит 20 баллов.
1
Школа Юных Программистов
Салехард, 20 января 2012
Задача B. Забавный конфуз
Имя входного файла: confuse.in
Имя выходного файла: confuse.out
Ограничение по времени: 2 секунды
Ограничение по памяти: 256 МБ
Пусть A — массив, состоящий из N элементов A1,...,AN. Обозначим его максимальное и
минимальное значение как max(A) и min(A) соответственно. Вычислим сумму элементов S,
S = A1 + A2 + … + AN. Заменим каждый элемент массива на разницу S и этого элемента: Ai := S - Ai,
1  i  N. Такое преобразование массива A назовем операцией «confuse».
Напишите программу которая по массиву B, полученному в результате K–кратного
применения операции Confuse к некоторому массиву A, вычислит разность max(A) - min(A).
Исходные данные
Первая строка входного файла содержит целые числа N и K, где N — количество элементов
массива B (2  N  10000), а K — количество применений операции «confuse» к начальному
массиву A (1  K  100). Вторая строка файла содержит N элементов массива B. Элементы
массива B — целые числа, принадлежащие диапазону от -2000000000 до 2000000000.
Результат
Единственная строка выходного файла должна содержать целое число, которое является
разностью max(A) и min(A).
Пример
Input
Output
42
45 52 47 46
7
Критерии оценки
Вы можете считать, что решение, верно работающее при N не превосходящем 20, будет
оценено не менее чем в 50 баллов.
2
Школа Юных Программистов
Салехард, 20 января 2012
Задача C. Работники
Имя входного файла: staff.in
Имя выходного файла: staff.out
Ограничение по времени: 2 секунды
Ограничение по памяти: 256 МБ
На заводе каждая из N деталей может быть обработана на одном из двух станков: A или B.
Каждая деталь имеет порядковый номер от 1 до N. К обработке детали поступают
последовательно, в соответствии со своими номерами. Количество деталей всегда четно.
Существуют правила, по которым определяется можно ли обрабатывать деталь на
определенном станке.
1) Если на текущий момент на станке B было обработано такое же количество деталей, как и
на станке A, то следующая деталь должна быть обработана на станке A.
2) В итоге на каждом из станков должно быть обработано одинаковое количество деталей.
Сколько людей, столько и мнений. Каждый из работников этого завода предложил свою
последовательность обработки деталей, причем все предложения оказались разными, но
удовлетворяющими указанным правилам.
Ваша задача – написать программу, которая по информации о количестве деталей определит
максимально возможное количество работников на заводе.
Исходные данные
Единственная строка входного файла содержит четное число N (2 ≤ N ≤ 28) – количество
деталей которое необходимо обработать.
Результат
Единственная строка выходного файла должна содержать целое число – максимально
возможное количество работников завода.
Пример
Input
Output
4
2
Комментарии к примеру
Первый работник считает, что на станке A необходимо обработать детали 1 и 2, а на станке
B, соответственно, 3 и 4. Второй думает, что на станке A нужно обработать детали 1 и 3, а на
станке B – детали 2 и 4. Других вариантов последовательности обработки не существует.
Критерии оценки
Вы можете считать, что решение, верно работающее при N не превосходящем 10, будет
оценено не менее чем в 40 баллов.
3
Download