реализация

20 задач
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

На орбитальной станции «Галактика-7» завершился ежегодный технический осмотр космических кораблей. По его результатам каждый корабль получил:

  • Оценки трёх бортовых систем: двигательной, навигационной и системы жизнеобеспечения (по шкале от 2 до 5, где 2 — критическая неисправность, 5 — отличное состояние)
  • Статус лицензии пилота: действующая или просроченная

Корабль допускается к полётам, если выполнены оба условия:

  1. Все три бортовые системы имеют оценку 3 или выше
  2. Лицензия пилота действующая

Корабль не допущен к полётам, если хотя бы одно из условий не выполнено.

Руководство станции решило предоставить возможность экстренного ремонта одной системы одному из кораблей. Корабль может претендовать на ремонт, если:

  1. Лицензия пилота действующая
  2. Ровно одна система имеет критическую неисправность (оценка 2), а две другие системы исправны (оценка 3 или выше)

Если таких кораблей несколько, выбирается тот, у которого наибольшая сумма оценок всех трёх систем (такой корабль ближе всего к допуску).

Гарантируется, что ровно один корабль удовлетворяет всем критериям отбора.
 

Формат входных данных

В первой строке находится число N — количество кораблей (1 ≤ N ≤ 1000).

Каждая из следующих N строк содержит пять целых чисел через пробел:

  • ID — бортовой номер корабля (натуральное число, не превышающее 108)
  • S1, S2, S3 — оценки трёх бортовых систем (каждая от 2 до 5)
  • L — статус лицензии пилота (1 — действующая, 0 — просроченная)
 

Формат выходных данных

Выведите два числа через пробел:

  1. Количество кораблей, не допущенных к полётам
  2. Бортовой номер корабля, который получит возможность экстренного ремонта
Напишите программу, которая делает реверс строки. То есть переставляет символы строки в обратном порядке. Программу реализуйте с использованием указателей.

Формат входных данных
Строка, содержащая алфаитно-цифровые символы (кроме пробела). Длина строки не более 100 символов.

Формат выходных данных
Выведите строку, получившуюся после реверса

Напишите программу, которая выполняет глобальное выравнивание двух ДНК-последовательностей, и выводит все выравнивания и их score (балл).

Формат входных данных
Две строки содержит две последовательности ДНК, далее вводятся настройки параметров:
  • Балл за совпадение
  • Балл за несовпадение
  • Балл за открытие гэпа
  • Балл за продолжение гэпа
Формат выходных данных
Выведите все выравнивания.

Напишите программу, которая выполняет глобальное выравнивание двух ДНК-последовательностей, и выводит все выравнивания и их score (балл).

Формат входных данных
Две строки содержит две последовательности ДНК.
Формат выходных данных
Выведите все выравнивания и их score (балл).

Этнограф изучает народ крайнего севера. Его заинтересовала структура бусов, которые составляются из бусин трех цветов: синего, зеленого и красного. Этнографу кажется, что частота, с которой определенные цвета встречаются у соседних бусин, позволяет сделать выводы о культуре народа.

Бусы можно задать в виде строки из заглавных английских букв: <<R>> для красной бусины, <<G>> для зеленой бусины и <<B>> для синей бусины. Соседние буквы в строке соответствуют соседним бусинам. Бусы находятся на круглой нитке, поэтому первая и последняя бусины также являются соседними.

Например, в ожерелье <<RGRGRGRG>> 8 раз рядом встречаются зеленая и красная бусины, а в ожерелье <<RRRR>> 4 раза рядом встречаются две красные бусины.

Помогите этнографу по образцам бусов выяснить, какая пара цветов встречается рядом чаще всего. Порядок цветов в паре не имеет значения.

Формат входных данных
На первой строке ввода находится чиcло \(n\) — количество бус в распоряжении этнографа (\(1 \le n \le 100\)).

На каждой из следующих строк находится строка из букв <<R>>, <<G>> и <<B>>. Длина каждой строки не меньше \(3\) и не больше \(1000\).

Формат выходных данных
Выведите одну или более строк по два символа: бусины каких двух цветов наибольшее число раз встречаются рядом. Если несколько пар бусин встречаются рядом одинаково часто, необходимо вывести все такие пары, по одной на строке, в любом порядке. Цвета в паре можно выводить в любом порядке.

У вас есть географический словарь, который содержит название стран и городов в этих странах. Напишите программу, которая определяет в какой стране находится город. 


Входные данные
Программа получает на вход количество стран N. Далее идет N строк словаря: каждая строка начинается с названия страны, затем идут названия городов этой страны. В следующей строке записано число M, далее идут M слов - названия M городов. Гарантируертся, что такой город есть в словаре.

Выходные данные
Для каждого города выведите название страны, в которой он находится.
 
Пример
Входные данные Выходные данные
1
2
Russia Moscow Petersburg Novgorod Kaluga
Ukraine Kiev Donetsk Odessa
3
Odessa
Moscow
Novgorod
Ukraine
Russia
Russia
Участники кольцевых гонок на одноколесных велосипедах нумеруются числами от 1 до N. Им предстоит проехать K кругов и победителем является тот, кто проехал их раньше всех. Участники стартуют одновременно с некоторой линии, которая называется конец круга. Каждый раз, когда участник пересекает эту линию, его номер фиксируется автоматической системой с высокой точностью (то есть два участника не могут пересечь эту линию одновременно). После прохождения K кругов эта же линия является финишной прямой. К сожалению, некоторые участники сходят с дистанции и проезжают меньшее количество кругов.
Организаторы соревнования забыли число K и стесняются спросить его у участников. Помогите организаторам определить победителя соревнования, используя только записи с системы фиксации. Гарантируется, что хотя бы один из участников преодолел необходимые K кругов и никто из участников не проехал более K кругов. Первая фиксация номера участника происходит после
прохождения первого круга.

Формат входных данных
В первой строке задаются целые числа N и M (1 ≤ N ≤ 100, 1 ≤ M ≤ 10000) — количество участников соревнования и записей с системы фиксации соответственно. Во второй строке задается M целых чисел от 1 до N – номера участников в том порядке, как
они фиксировались системой.

Формат выходных данных
Выведите одно число — номер победителя
 
 
Примеры
Входные данные Выходные данные
1 3 4
1 3 3 1
3
2 3 5
1 1 2 3 1
1
В этом году Иван заканчивает школу и поступает в вуз. За время своей учебы он часто участвовал в олимпиадах по информатике и у него накопилось много дипломов. Иван раскладывал дипломы по папкам совершенно бессистемно, то есть любой диплом мог оказаться в любой из папок. К счастью, Иван помнит, сколько дипломов лежит в каждой из папок.

Иван хочет принести в приемную комиссию выбранного вуза папку, в которой находится диплом Московской олимпиады по программированию (такой диплом у Ивана ровно один). Для того чтобы понять, что в данной папке нужного диплома нет, Ивану нужно просмотреть все дипломы из этой папки. Чтобы открыть одну папку Ивану нужно потратить одну секунду, просмотр одного диплома занимает у него также одну секунду, и он может мгновенно переходить к следующей папке после окончания просмотра предыдущей. Порядок просмотра папок Иван может выбирать. То, что в пустых папках диплом можно не искать, Ивану очевидно.

По заданному количеству дипломов в каждой из папок требуется определить, за какое наименьшее время в худшем случае Иван поймет, в какой папке содержится нужный ему диплом.

Входные данные
В первой строке входного файла записано целое число N (1 ≤ N ≤ 105) - количество папок. Во второй строке записаны N целых чисел a1, a2, ..., aN (0 ≤ ai ≤ 105) - количество дипломов в каждой из папок.

Выходные данные
Выведите одно число - минимальное количество секунд, необходимое Ивану в худшем случае для определения того, в какой папке содержится диплом.

Примечание
В первом примере Иван может открыть и просмотреть папку 2 за 2 секунды и, не найдя там диплома, понять, что диплом находится в папке 1.

Во втором примере Иван за 2 секунды просмотрит папку 1, потом за 2 секунды просмотрит папку 4, а если ни в одной из них диплома не встретилось, он поймет, что диплом в папке 3.
Примеры
Входные данные Выходные данные
1 2
2 1
2
2 4
1 0 2 1
4
У Индианы Джонса есть ключ от двери, ведущей к тайным богатствам инков. Ключ имеет форму правильного треугольника, который, в свою очередь, разбит на n2 маленьких правильных треугольников, в каждом из которых написана одна десятичная цифра. Пример ключа приведен ниже на рисунке.


Джонс вставил треугольник в соответствующее треугольное отверстие в двери, и... она не открылась. Возможно, он вставил ключ неправильно, ведь его можно вставить тремя способами. Из-за того, что у Джонса осталась лишь одна попытка для того, чтоб открыть двери (в случае неудачи его убьют уже настигающие его кровожадные инки), он хочет знать как будет выглядеть ключ при его вставке в дверь другими двумя способами. После этого он сделает правильный выбор. Вас, как одного из двух своих помощников, он попросил показать ему только один из двух возможных вариантов. Внешний вид ключа, приведенного выше, при повороте против и по часовой стрелке изображен на рисунке ниже.


Поскольку вы не хотите смерти Индианы и хотите получить свою долю сокровищ, вам придется помочь ему!

Входные данные
В первой строке входного файла содержится одно целое число n (1 ≤ n ≤ 100). В следующих n строках описан сам треугольник. Строка входного файла, имеющая номер i + 1, содержит 2i - 1 цифру — содержание i-й строки ключа-треугольника.

Последняя строка содержит слово counterclockwise, если треугольник необходимо повернуть против часовой стрелки, и clockwise в противном случае.

Выходные данные
Выведите вид ключа при его повороте в требуемую сторону. Треугольник опишите в том же формате, в котором это сделано во входном файле.
 
Примеры
Входные данные Выходные данные
1 3
1
2 3 4
5 6 7 8 9
counterclockwise

4 8 7 
1 3 2 6 5 
2 3
1
2 3 4
5 6 7 8 9
clockwise

7 6 2 
9 8 4 3 1 
На входе в общежитие стоит турникет. Чтобы через него пройти, требуется приложить пропуск. Пропуск надо прикладывать и при входе в общежитие и при выходе из него. Для того, чтобы исключить несанкционированные проходы, пропуск не работает два раза подряд на вход и два раза подряд на выход.

Однако, хитрые студенты придумали, как обойти это ограничение. Чтобы войти или выйти вдвоем по одному пропуску, они прикладывают его с нужной стороны, потом с противоположной, но никто не проходит, а затем снова с нужной. 

Начальник охраны решил разобраться с данной проблемой и сделать выговоры всем нарушителям. По каждому событию входа/выхода есть запись в журнале событий. Он считает нарушителями тех владельцев пропусков, у которых произошло три события вида вход-выход-вход менее чем за dt минут.

Вам дан журнал событий турникета. Требуется вывести список тех студентов, кому будет сделан выговор

Входные данные
В первой строке задано два числа n и dt — число записей в журнале событий турникета и ограничение времени, выбранное начальником охраны, соответственно (1≤n≤1000, 3≤dt≤1440).
В следующих nn строках даны записи в журнале событий в хронологическом порядке. Запись в журнале состоит из трех частей, разделенных пробелом:
  •  Время события в формате hh:mm
  •  Фамилия студента, состоящая из не более чем 20 букв латинского алфавита, первая из которых заглавная.
  •  Тип события: in, если произошел вход и out, если произошел выход.

Гарантируется, что не существует двух событий, которые происходят одновременно. Также гарантируется, что у любых двух разных студентов разные фамилии и у одного студента не бывает двух событий одного типа подряд.


Выходные данные
В первой строке выведите число нарушителей. После чего выведите фамилии нарушителей в лексикографическом порядке.
 

Ввод Вывод
6 10
01:23 Petrov in
01:24 Ivanov out
01:25 Petrov out
01:27 Ivanov in
01:32 Petrov in
01:33 Ivanov out
1
Petrov
6 10
01:23 Petrov in
01:24 Ivanov out
01:25 Petrov out
01:27 Ivanov in
01:33 Petrov in
01:34 Ivanov out
0



 

Обычно, прежде чем в 11 лет поступить в Хогвартс, дети-волшебники воспитываются дома, потому что нельзя быть уверенным, что они смогут скрыть свои волшебные способности от одноклассников-маглов. Например, детей Уизли учила миссис Уизли в Норе.
В Хогвартсе 4 факультета. Четыре факультета в Хогвартсе соответствуют четырем элементам: Гриффиндор – огонь, Когтевран – воздух, Пуффендуй — земля, Слизерин – вода.
У каждого факультета имеется свой флаг. 
Напишите программу, которая по данному числу n от 1 до 9 выводит на экран n флагов. Изображение одного флага имеет размер 4×4 символов, между двумя соседними флагами также имеется пустой (из пробелов) столбец.
Разрешается вывести пустой столбец после последнего флага. Внутри каждого флага должен быть записан его номер — число от 1 до n.

Входные данные
Вводится натуральное число.

Выходные данные 
Выведите ответ на задачу.

Примеры
Входные данные Выходные данные
1 3
+___ +___ +___ 
|1 / |2 / |3 / 
|__\ |__\ |__\ 
|    |    | 
Когда в очередной раз на уроке физкультуры дети не смогли сразу выстроиться по росту и это заняло 5 минут занятия, физрук придумал новое правило. Дети заходят все вместе и сразу встают в ряд. После этого могут меняться местами только два школьника, стоящих рядом. При этом они, конечно же, должны отжаться столько раз, какая у них оказалась разница в росте. Сколько раз в результате суммарно отожмутся школьники, прежде чем у них получится выстроиться по росту в порядке убывания?
 
Формат входных данных
В первой строке число содержится число N (2 <= N <= 1000)  количество детей в классе. В
следующей строке записана исходная расстановка школьников: N чисел через пробел, i-е число
обозначает рост i-го школьника ri (1 <= ri <= 109) в нанометрах.
 
Формат выходных данных
Одно число  суммарное количество отжиманий. Гарантируется, что школьники суммарно отожмутся не более 2 · 109 раз.

Ввод Вывод
3
1 2 3
8

Замечание
В примере школьники с ростом 1 и 2 поменяются местами и каждый отожмјтся по разу, затем школьники 1 и 3 (каждый отжимается 2 раза, суммарно плюс 4 отжимания), и последними школьники 2 и 3 (плюс 2 отжимания).

Вы занимаетесь разработкой системы по продаже билетов на поезда. Несмотря на то, что поезда ходят по множеству различных маршрутов, вы будете работать только с одним из них. Маршрут рассматриваемого поезда состоит из n остановок: маршрут начинается в первой из них, а заканчивается в n-й, соответственно. Всего в поезде имеется m мест для пассажиров.

Эта система будет использоваться для продажи билетов пассажирам. При покупке билета пассажир указывает номер станции L, на которой он хочет сесть на поезд и номер станции R, на которой он хочет сойти с поезда. Если у одного пассажира есть билет до станции S, а другой хочет купить билет от станции S, то они друг другу не мешают: второй может занимать только что освободившееся место первого. Система должна сообщить пассажиру следующую информацию:

  • f, где f  число свободных мест мест между L-й и R-й станциями, если хотя бы одно такое место есть. В этом случае пассажир покупает один билет с L-й по R-ю станцию.
  • 0 если подходящих свободных мест нет. В этом случае пассажир билет не покупает.

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

В первой  находятся натуральные числа n (2 ≤ n ≤ 100), m (1 ≤ m ≤ 100) и k (1 ≤ k ≤ 100) — число станций в маршруте поезда, максимальное число пассажиров в поезде и число обращений обращений пассажиров к системе покупки билетов.

Следующие k строк содержат по два натуральных числа Li и Ri (1 ≤ Li < Ri ≤ n)  — начальная и конечная станции в i-м обращении к системе.

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

Для каждого запроса на покупку билета в своей строке выведите ответ системы: число билетов, которые можно купить на данный маршрут, или 0, если ни одного билета купить нельзя.

Пример входных и выходных данных

Ввод Вывод
5 2 4
1 4
1 3
2 5
3 5
2
1
0
1

Пете подарили n гирь и чашечные весы. Каждая гиря весит ai грамм. Первым делом он разложил гири на чаши. При этом одна из чаш может быть пустой. Теперь он хочет выяснить, какой наименьшей разницы весов на чашах можно достичь, не более чем за два перекладывания гирь.

Одно перекладывание происходит следующим образом: Петя выбирает некоторую гирю, лежащую на одной чаше весов и перекладывает ее на другую чашу весов. Обратите внимание, что Петя не обязан сделать ровно два перекладывания, он может сделать меньшее количество.

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

В первой строке находится одно натуральное число n (1 ≤ n ≤ 50) — количество гирек.
В каждой из следующих n строк находятся два натуральных числа ai, bi (1 ≤ ai ≤ 1000, 1 ≤ bi ≤ 2) — масса гири и номер чаши весов, на которой она находится.

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

Требуется вывести одно число — наименьшую разницу весов, которую можно достичь, сделав не более двух перекладываний гирь.

Пример входных и выходных данных

Ввод Вывод
5
4 2
1 1
8 1
5 2
2 1
0
6
20 2
3 2
2 1
5 1
1 1
3 2 
6
4
3 2
10 2
8 2
9 2 
4

На складе хранятся ящики разных цветов и размеров. Каждый цвет и каждый размер имеют свой порядковый номер в информационной системе.

Перед отправкой ящики упаковывают и сортируют. Упаковка и сортировка ящиков неэффективна и происходит следующим образом:

  • Ящик под номером i поступает на склад.
  • Ищется стопка, в которой хранятся ящики с размером, равным размеру i-го. Если такой стопки нет, формируется новая стопка.
  • Поступающий ящик помещается наверх найденной или сформированной стопки.
  • Если в какой-либо стопке оказывается два верхних ящика одного цвета, то они запаковываются и отправляются адресату.
Отправка продолжается до тех пор, пока не будут обработаны все поступающие на склад ящики.

 

Ваша задача написать программу, которая сможет оценить эффективность данной системы и посчитает сколько ящиков будут отправлены после окончания обработки поступающих ящиков.

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

В первой находятся три натуральных числа n, m, k (1 ≤ n, m, k ≤ 100) — количество ящиков, поступающих на склад, количество различных размеров и количество различных цветов соответственно.
В каждой из следующих n строк находятся по два натуральных числа xi и yi (1 ≤ xi ≤ m; 1 ≤ yi ≤ k)  — номер размера и номер цвета ящика, который поступит i-м на склад.

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

Требуется вывести одно число — сколько ящиков будут отправлены.

Пример входных и выходных данных

 
Вывод Ввод
5 2 1
1 1
2 1
1 1
2 1
1 1
4
5 1 2
1 1
1 2
1 1
1 2
1 1
0

На складе хранятся ящики разных цветов и размеров. Каждый цвет и каждый размер имеют свой порядковый номер в информационной системе.

Перед отправкой ящики упаковывают и сортируют. Упаковка и сортировка ящиков неэффективна и происходит следующим образом:

  • Ящик под номером i поступает на склад.
  • Ищется стопка, в которой хранятся ящики с размером, равным размеру i-го. Если такой стопки нет, формируется новая стопка.
  • Поступающий ящик помещается наверх найденной или сформированной стопки.
  • Если в какой-либо стопке оказывается два верхних ящика одного цвета, то они запаковываются и отправляются адресату.
Отправка продолжается до тех пор, пока не будут обработаны все поступающие на склад ящики.

 

Ваша задача написать программу, которая сможет оценить эффективность данной системы и посчитает сколько ящиков останутся на складе. 
 

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

В первой строке находятся три натуральных числа n, m, k (1 ≤ n, m, k ≤ 100) — количество ящиков, поступающих на склад, количество различных размеров и количество различных цветов соответственно.
В каждой из следующих n строк находятся по два натуральных числа xi и yi (1 ≤ xi ≤ m; 1 ≤ yi ≤ k)  — номер размера и номер цвета ящика, который поступит i-м на склад.

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

Требуется вывести одно число — сколько ящиков останутся на складе, после выполнения отправки.

Пример входных и выходных данных

Ввод Вывод
5 2 1
1 1
2 1
1 1
2 1
1 1
1
5 1 2
1 1
1 2
1 1
1 2
1 1
5

Напишите программу, которая проверяет правильность расстановки скобок в математическом выражении. Используются скобки одного типа: ( ). В выражении может быть несколько уровней вложенности.

Входные данные
На вход подается символьная строка, представляющая собой арифметическое выражение.

Выходные данные
Если скобки расставлены верно, то вывести на экран слово Yes, в противном случае - No и количество неправильно расставленных скобок (скобка считается неправильно расставленной, если у нее нет пары).

 
Примеры
Входные данные Выходные данные
1 7-((X*((X+Y)/(J-3))+Y)/(4-2.5)) Yes
2 (a-c/(d) No. Incorrect brackets = 1
Вам дано три числа a, b и c. Вы должны в таком порядке приписать эти числа друг к другу, чтобы в результате получилось минимальное число. Например, если a = 12, b = 5, c = 3, приписыванием можно получить числа 1253, 1235, 3125, 3512, 5123, 5312. Минимальным, среди этих чисел является 1235.

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

В первой строке через пробел записаны три целых числа a, b и c (1 ≤ a, b, c ≤ 100).

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

Выведите минимальное число, которое можно получить, приписав a, b и c друг к другу в каком-нибудь порядке.

Примеры тестов

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

12 3 5
Выходные данные
1235
Входные данные
2 21 3
Выходные данные
2123

У Артура есть два натуральных числа — x и y (x < y). Помогите ему найти натуральное число z такое, что:

  • z > x;
  • z > y;
  • z не делится на x;
  • z не делится на y;
  • z делится на y - x;
  • z минимально.

Формат входных данных

В первой строке находятся числа x и y (xy ≤ 106)

Формат выходных данных

Выведите число z или '0', если его не существует.

Ввод:
1 2

Вывод:
0

Поделиться
Класснуть