printВсе задачи

printЗадачи очного тура региональной олимпиады по информатике 2007

1. Игра "Наказание жадности"

Ограничения: время – 1s/2s, память – 16MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (3)

Для игры используется `N` карточек, на каждой из которых записано целое положительное число. На первом этапе карточки перемешиваются и кладутся на стол числами вниз. Первый игрок («жадина») случайно берет по две карточки из кучи, карточку с большим числом он забирает себе, а карточку с меньшим числом – отдает второму игроку. В случае равенства чисел одну карточку он берет себе, а другую отдает сопернику. При распределении второй игрок видит обе карточки. После того как все карточки распределены, начинается второй этап игры («наказание»). Ход делает всегда первый игрок. Первый игрок кладет на стол числом вверх любую карточку по своему выбору из имеющихся у него на руках. Второй игрок смотрит на карточку, положенную первым игроком, и отвечает, выкладывая одну из своих карточек по собственному выбору. Игрок, который положил карточку с большим числом, забирает обе карточки и кладет в свою кучу выигранных карт. Эти карточки далее не участвуют в игре. Если игроки положили карточки с одинаковыми числами, то каждый забирает обратно свою карточку и кладет ее в кучу выигранных карт. Когда на руках у игроков не останется карт, они считают сумму чисел на выигранных картах. Побеждает игрок с большей суммой.
Напишите программу, которая вычислит результат игры при условии, что каждый из игроков стремится максимизировать свой выигрыш и не ошибается.
В первой строке ввода содержится одно целое четное число `N\ (2≤N≤200)` – количество карт. Далее следует `N/2` строк, в которых описывается в каком порядке вытаскивались карточки из кучи на первом этапе игры, в каждой строке содержится два целых числа в диапазоне от 1 до 1000, разделенных пробелом – числа на паре карточек, вытащенных первым игроком.
В выходной файл вывести два целых числа через пробел – суммы на выигранных карточках для первого и второго игрока.

Пример ввода

6
4 3
5 5
1 2

Вывод для примера

6 14
Примечание: после первого этапа игры у первого игрока на руках будут карточки с числами 2, 4 и 5, а у второго – 1, 3 и 5. Если первый игрок ходит карточкой с числом 5, то лучшим ходом для второго будет карточка с числом 1. Остальные карточки первого игрока с числами 2 и 4 будут выиграны вторым игроком, если он использует карточки с числами 3 и 5 соответственно.

2. Ковбой и поросенок

Ограничения: время – 1s/2s, память – 16MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

В штате Канзас одним из развлечений, устраиваемых в праздники, является ловля поросенка. В загон выпускается поросенок и ковбой должен поймать его как можно быстрее. Предположим, что загон имеет форму круга. Центр координат расположен в центре загона. Поросенок бежит вдоль ограды с постоянной скоростью по часовой стрелке. Известно начальное положение ковбоя и его скорость. Ковбой бежит наперерез поросенку и ловит его, когда их координаты совпадут. Напишите программу, которая рассчитает минимальное время для поимки поросенка.
В первой строке ввода содержится шесть чисел, разделенных пробелами – начальные координаты ковбоя в метрах `X_c` и `Y_c\ (-100≤X_c,Y_c≤100)`, скорость ковбоя в м/c `V_c\ (1≤V_c≤10)`, начальные координаты поросенка в метрах `X_p` и `Y_p\ (-100≤X_p,Y_p≤100,\ X_c^2\ +\ Y_c^2\ ≤\ X_p^2\ +\ Y_p^2\ =\ R^2,\ R` – радиус загона, `R≥10`) и скорость поросенка в м/c `V_p\ (1≤V_p≤50)`.
В первой строке вывести одно число с точностью `10^{-7}` – минимальное время в секундах для поимки поросенка.

Пример ввода

0.0 0.0 10.0 -20.0 0.0 50.0

Вывод для примера

2.0000000

3. Разные цифры

Ограничения: время – 1s/2s, память – 4MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Дано целое число `N`. Напишите программу, определяющую, в каких системах счисления с основаниями от 2 до 36 это число не содержит одинаковых цифр.
В первой строке ввода содержится одно целое число `N\ (1≤N≤10^9)` в десятичной системе счисления.
В первой строке вывести основания систем счисления в порядке возрастания, разделяя их пробелом.

Пример ввода

100

Вывод для примера

11 12 13 14 15 16 17 18 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36

4. Прыжки по буквам

Ограничения: время – 1s/2s, память – 16MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Дана цепочка из `N` символов, состоящая из прописных латинских букв. Необходимо пройти с первого символа цепочки до последнего символа, прыгая не более чем на `K` символов. Стоимость прыжка, при котором символ не меняется, равна 0, а стоимость прыжка на другой символ равна 1.
Напишите программу, вычисляющую наименьшую стоимость перехода с первого на последний символ.
В первой строке ввода содержатся два целых числа – длина цепочки `N\ (1≤N≤1000000)` и максимальная длина прыжка `K\ (1≤K≤N)`. В второй строке содержится цепочка из `N` прописных латинских букв.
Вывести одно целое число – минимальную стоимость перехода.

Пример ввода

10 2
ABABBCACBC

Вывод для примера

2

5. Треугольники

Ограничения: время – 1s/2s, память – 16MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Дан набор из нескольких отрезков. Необходимо составить треугольник наибольшей площади, используя в качестве сторон три отрезка из заданных.
В первой строке содержится одно целое число `N\ (3≤N≤20)` – количество отрезков. Во второй строке содержатся `N` целых чисел от 1 до 1000 – длины отрезков.
В первой строке вывести одно число с тремя десятичными знаками – максимальную площадь треугольника из заданных отрезков. Если из заданных отрезков нельзя построить ни одного треугольника, то вывести 0.

Пример ввода

5
2 5 8 16 7

Вывод для примера

17.321
loading