Document 623358

advertisement
A. Сортировка
ограничение времени на тест: 0.5 сек.
Дано N (1<=N<=1000) целых положительных чисел. Требуется отсортировать их так, что бы
сначала шли нечетные числа в неубывающем порядке, а затем четные в невозрастающем.
Входные данные
В первой строке входного файла записано число N. Далее записано N чисел, разделенных
пробелами и/или переводами строки. Все числа не превосходят 1000.
Выходные данные
В единственную строку выходного файла запишите все N данных чисел, отсортированных
описанным выше образом. Числа разделяйте единичным пробелом.
Пример
Ввод
6 6 2
3 1 4 5
Вывод
1 3 5 6 4 2
B. Калькулятор
ограничение времени на тест: 0.5 сек.
Дано выражение вида:
<число><операция><число>=
где <операция> - это одна из операций +, -, *, / (здесь деление понимается как целая часть от
деления), <число> - любое натуральное число. Требуется вычислить значение данного
выражения.
Входные данные
Во входном файле содержится одна строка вида <число><операция><число>=. Оба числа в
строке - натуральные от 1 до 150. Гарантируется, что не менее, чем в половине тестов жюри
оба числа будут от 1 до 9.
Выходные данные
Выходной файл должен содержать одно целое число - значение выражения без ведущих
нулей.
Пример
Ввод
Пример 1
3-4=
Вывод
Пример 1
-1
Пример 2
124/25=
Пример 2
4
C. Короткая последовательность цифр
ограничение времени на тест: 0.5 сек.
Дано целое положительное число N. В записи бесконечной последовательности групп цифр
S1S2...Sk... найти цифру, находящуюся в позиции с номером N. Каждая группа вида Sk
состоит из последовательности натуральных чисел от 1 до k, выписанных подряд.
Например, первые восемьдесят цифр последовательности имеют вид:
11212312341234512345612345671234567812345678912345678910123456789101112345678910
Входные данные
В первой строке входного файла содержится натуральное число N (1<=N<=32768).
Выходные данные
Вывести в выходной файл цифру данной последовательности в позиции N.
Пример
Ввод
20
Вывод
5
D. Утерянный список
ограничение времени на тест: 0.5 сек.
В школьной олимпиаде по прыжкам в длину принимает участие N школьников. Каждый из
них получил индивидуальный номер - целое число от 1 до N, у любых двух участников
номера различны. Была проведена жеребьевка, в ходе которой выяснилось в каком порядке
они прыгают (ученики прыгают по очереди, один за другим). К сожалению, этот список был
утерян, но каждый ученик запомнил, сколько участников, с большим, чем у него
индивидуальным порядковым номером, прыгают перед ним. Помогите организаторам
восстановить утерянный список.
Входные данные
В первой строке входного файла записано число N (1 <= N <= 1000). Далее, во второй
строке, следуют N целых чисел A1, A2, ..., AN, где число Ak (0 <= Ak < N) означает,
что ровно Ak участников с большими, чем k номерами, прыгает раньше участника с
номером k. Числа разделены единичными пробелами.
Выходные данные
Выведите в одну строку N чисел - последовательность индивидуальных номеров всех
участников в порядке совершения прыжков. Если решений несколько, выведите любое из
них. Числа разделяйте единичными пробелами.
Пример
Ввод
4
2 0 1 0
Вывод
2 4 1 3
E. Управление памятью
ограничение времени на тест: 0.5 сек.
Проблема выделения и распределения памяти ЭВМ - одна из центральных проблем
современной кибернетики. Данная модель памяти ЭВМ состоит из N ячеек,
пронумерованных числами от 1 до N. В нашей модели программы могут запрашивать
пустые ячейки памяти для работы и могут освобождать их. Команда <ID>:=GET_EMPTY
запрашивает у операционной системы номер пустой ячейки для того, что бы поместить в нее
данные (найденная ячейка становится занятой). Номер пустой ячейки помещается в <ID>,
<ID> - последовательность заглавных латинских букв и цифр, длинной не более 4 символов.
Команда CLEAR(<ID>) освобождает ячейку с номером, записанным в <ID>. Вам дана
последовательность описанных выше инструкций. Ваша задача - для каждой инструкции
<ID>:=GET_EMPTY выдать значение <ID>. Гарантируется, что записанная
последовательность инструкций может быть выполнена для данного размера памяти, а
также правильность программы (не вызывается CLEAR на незанятую ячейку).
Входные данные
В первой строке входного файла содержится целое число N (1 <= N <= 10000) и M (1 <= M
<= 100000). Далее содержится M строк - в каждой строке по одной команде.
Выходные данные
Для каждой команды <ID>:=GET_EMPTY выведите в выходной файл номер найденной
пустой ячейки. Если таких ячеек несколько - выдайте любую.
Пример
Ввод
3 7
A:=GET_EMPTY
B:=GET_EMPTY
C:=GET_EMPTY
CLEAR(C)
C:=GET_EMPTY
CLEAR(B)
B:=GET_EMPTY
Вывод
1
2
3
3
2
F. В поисках
ограничение времени на тест: 0.5 сек.
Вы планируете авиапутешествие. Вам необходимо попасть из пункта A в пункт B, попутно
побывав в пункте C. Составьте искомый маршрут путешествия.
Входные данные
В первой строке записано три натуральных различных числа A, B, C. Во второй строке
записаны два числа N и M (3<=N<=200; 0<=M<=N*(N-1)/2). Далее в M строках описаны все
рейсы парами номеров пунктов, которые они соединяют. Все рейсы двунаправлены. Между
парой городов существует не более одного рейса. Не бывает рейса из города в себя.
Выходные данные
В первой строке выходного файла выведите фразу <YES>, если искомый маршрут
существует и <NO> в противном случае. Если ответ положительный выведите во вторую
строку искомый маршрут. Первое число во второй строке - его длина. Если ответов
несколько - выводите любой.
Пример
Ввод
1 2 3
3 2
1 2
2 3
Вывод
YES
4 1 2 3 2
G. Испорченный реферат
ограничение времени на тест: 0.5 сек.
Петя долго набирал реферат, используя только латинские буквы и пробелы. Он пользовался
пиратской копией редактора "PingWord" и при финальном сохранении редактор записал
сначала все согласные буквы в порядке их следования, затем все гласные, а пробелы не
записал. Петя знает, что он использовал только латинские буквы. В служебных файлах
редактора Петя нашел словарь слов, используемых в реферате и одну из строк реферата,
преобразованную редактором. Теперь он хочет восстановить текст этой строки. Помогите
ему. Считайте, что гласные буквы это 'e', 'y', 'u', 'i', 'o' и 'a'.
Входные данные
В первой строке входного файла записаны согласные буквы, во второй - гласные буквы
преобразованной строки. В третьей строке записано число N (0 <= N <= 100) - количество
слов в словаре. Далее идет N строк со словами из словаря. Слова в словаре могут быть не в
том регистре, как в тексте. Известно, что сумма длин первых двух строк входного файла не
превосходит 100 символов, и в словаре нет слов более чем из 30 букв.
Выходные данные
Выведите исходный текст строки, разделяя слова пробелом. Если решений несколько, то
выведите любое. Известно, что хотя бы одно решение существует.
Пример
Ввод
Trnrprgrmmngsklls
Aiyouoaii
6
programming
skill
skills
train
you
your
Вывод
TrAin your programming skills
H. Сессия все ближе
ограничение времени на тест: 1 сек.
Профессор и ассистент собираются принимать экзамен по курсу комбинаторных алгоритмов
в группе из n студентов.
Процедура сдачи экзамена такова: сначала студент j (возможно, без подготовки) беседует с
ассистентом a_j минут (время беседы зависит от количества пропусков занятий и известно).
Ассистент дает ему заранее подготовленную сложную задачу, для решения которой этому
студенту будет предоставлено не менее b_j минут, затем несчастный студент отправляется
на расправу к профессору, разговор с которым зависит от предшествующих оценок студента
и продлится c_j минут.
Каждый из экзаменаторов в любой момент времени работает только с одним студентом.
Посоветуйте, в какой очередности бригаде экзаменаторов следует принимать студентов,
чтобы как можно быстрее закончить экзамен и со спокойной совестью отправиться пить
"Кока-Колу"?
Входные данные
Исходные данные задачи - число студентов группы n (1 <= n <= 10) (первая строка
исходного файла) и последующие n строк, содержащих по три целых числа a_i, b_i, c_i (для i
= 1..n, все числа от 0 до 60).
Выходные данные
Результат вычислений - минимальная продолжительность экзамена в минутах.
Пример
Ввод
4
5 2 7
4 4 3
7 3 2
5 1 6
Вывод
26
I. Мэры
ограничение времени на тест: 1 сек.
Во Флатландии имеется N городов, расположенных на плоскости в точках с координатами
(xi, yi). Недавно президент Флатландии решил назначить в каждом городе мэра. При этом,
чтобы его нельзя было уличить в дискриминации, он решил назначить на эти посты как
мужчин, так и женщин. Для каждой горизонтальной и вертикальной прямой назовем
несправедливостью модуль разности между количеством городов на этой прямой, в которых
на пост мэра назначены мужчины и количеством городов на этой прямой, в которых на этот
пост назначены женщины.
Чтобы показать свою беспристрастность, президент хочет минимизировать суммарную
несправедливость по всем вертикальным и горизонтальным прямым.
Напишите программу, которая определит для каждого города, следует ли в нем назначить на
пост мэра женщину или мужчину, так, чтобы суммарная несправедливость была
минимальна.
Входные данные
Первая строка входного файла содержит число N - количество городов (1 <= N <= 20000).
Следующие N строк содержат по два целых числа - координаты городов. Все координаты не
превышают 10^9 по абсолютной величине.
Выходные данные
Выведите в выходной файл M чисел - для каждого города выведите 0, если в нем следует
назначить на пост мэра мужчину, и 1, если женщину.
Пример
Ввод
5
0 0
0 1
1 0
1 1
1 2
Вывод
1
0
0
1
0
J. Пересечение
ограничение времени на тест: 0.5 сек.
Необходимо определить количество точек пересечения двух окружностей. Окружности
могут вырождаться в точки.
Входные данные
В первой строке записаны числа x1, y1, r1 - координаты и радиус первой окружности. Во
второй строке записаны числа x2, y2, r2 - координаты и радиус второй окружности. Все
входные данные целые, неотрицательные, не превосходящие 10000.
Выходные данные
Выведите ответ на задачу. Если пересечений бесконечно много, то выведите -1.
Пример
Ввод
0 0 3
7 0 4
Вывод
1
Пояснение
Окружности касаются в точке (3,0).
Download