Типы данных

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

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

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

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

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

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


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

Примеры
Входные данные Выходные данные
1 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
2 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
✓ 37✗ 129600лёгкаяВойти и решать

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

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

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

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

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

В первой строке задано два числа n и dt — число записей в журнале событий турникета и ограничение времени, выбранное начальником охраны, соответственно (1≤n≤1000, 3≤dt≤1440).

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

  • Время события в формате hh:mm
  • Фамилия студента, состоящая из не более чем 20 букв латинского алфавита, первая из которых заглавная.
  • Тип события: in, если произошел вход и out, если произошел выход.

 

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

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

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

Примеры
Входные данные Выходные данные
1 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
Ivanov
2 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
✓ 10✗ 37700средняяВойти и решать
Знайка из Цветочного города изобрел ракету. Для полета на Луну было решено сделать запас некоторого количества различных продуктов. После опроса всех коротышек, у Знайки оказался на руках очень большой список, в котором записано пожелание каждого коротышшки в виде наименования продукта и количества упаковок. На собрании было решено, что не рационально брать с собой продукты, у которых суммарное количество упаковок меньше 50. Помогите коротышкам определить, запас каких продуктов делать не нужно. Выведите эти продукты в лексикографическом порядке (от a до z).

Входные данные
Программа получает список строк. Каждая строка содержит наименование продукта, затем через пробел идет количество упаковок, которое указал коротышка. Список заканчивается словом END!.

Выходные данные
Выведите наименование всех ненужных продуктов в лексикографическом порядке. Каждый продукт выводите в отдельной строке.
 
Примеры
Входные данные Выходные данные
1
cookies 10
cookies 50
syrup 9
syrup 8
cookies 1
apples 2
END!
apples
syrup
✓ 140✗ 222600лёгкаяВойти и решать

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


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

Выходные данные
Для каждого города выведите название страны, в которой он находится.
 
Пример
Входные данные Выходные данные
1
2
Russia Moscow Petersburg Novgorod Kaluga
Ukraine Kiev Donetsk Odessa
3
Odessa
Moscow
Novgorod
Ukraine
Russia
Russia
У всех жителей Цветочного города спросили его любимый фрукт.  Определите самый любимый фрукт среди всех жителей Цветочного города.

Входные данные
Программа получает на вход текст (количество строк может быть много). Текст заканчивается строкой END!

Выходные данные
Выведите любимый фрукт среди всех жителей Цветочного города. Если таких фруктов несколько, выведите тот, который меньше в лексикографическом порядке.
 
Пример
Входные данные Выходные данные
1 apple orange banana banana orange
END!
banana
Знайка из Цветочного города изобрел ракету. В один прекрасный день было решено лететь на Луну. Для удачного полета, на ракете должен быть определенный запас продуктов. Чтобы любой коротышка не грустил во время полета, было решено у каждого спросить его любимый продукт и количество упаковок, которое ему необходимо на весь полет. В итоге у Знайки оказался на руках очень большой список, в котором наименования продуктов повторялось с разным количеством. Знайка просит вас о помощи. Ему нужен список продуктов в лексикографическом порядке с указанием общего числа упаковок каждого продукта.

Входные данные
Программа получает список строк. Каждая строка содержит наименование продукта, затем через пробел идет количество упаковок, которое указал коротышка. Список заканчивается словом END!.

Выходные данные
Выведите наименование всех продуктов в лексикографическом порядке, затем, через пробел, общее количество упаковок данного продукта.
 
Примеры
Входные данные Выходные данные
1
cookies 10
cookies 5
syrup 9
syrup 8
cookies 1
END!
cookies 16
syrup 17
✓ 72✗ 98500лёгкаяВойти и решать
В Цветочном городе намечается Праздник Весны. К празднику было решено надуть большое количество воздушных шариков. Каждый коротышка получил неограниченный запас воздушных шариков. Чтобы ускорить подсчет надутых шариков, Винтик и Шпунтик изобрели робота, который ведет подсчет всех надутых шариков.

Каждый коротышка, в момент когда рядом с ним оказывается робот, может поступить одним из двух способов.
  1. Нажать кнопку 1, назвать свое имя и сказать, сколько он надул шариков (назвать положительно число) или сколько шариков у него лопнуло (назвать отрицательное число). После этого робот считает количество надутых шаров у данного коротышки.
  2. Нажать кнопку 2, назвать имя любого коротышки. После этого робот показывает на экране количество надутых шаров у указанного коротышки.  Если робот еще ни разу не проезжал мимо указанного коротышки (не запоминал его шарики), то робот выдает слово ERROR.
Обратите внимание, что в ситуации, когда коротышка лопнул ровно столько шариков, сколько надул, сумма у робота становится равной 0; но, раз робот уже считал его шарики, нулевое значение не является основанием выводить ERROR.

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

Помогите Винтину и Шпунтику написать программу для робота. Обязательно используйте словари (ассоциативные массивы)

Входные данные
Программа получает на вход количество запросов N (1 < N < 100000) - количество коротышек, мимо которых должен проехать робот. Далее следуют N строк в каждой из которых описаны способы выбора кнопок коротышкой.
Форматы строк:
- при нажатии кнопки 1: 1 <имя> <число>;
- при нажатии кнопки 2: 2 <имя>.
<имя> - любая последовательность латинских символов.


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

 
Пример
Входные данные Выходные данные
1
7
1 neznayka 3
1 ponchik 5
2 neznayka
1 neznayka -2
2 neznayka
2 lala
2 ponchik
3
1
ERROR
5
6

✓ 116✗ 124700средняяВойти и решать
Два друга-биолога Василий и Петр едут в Африку на поезде. Билеты они покупали в разное время и не смогли получить места в одном вагоне. Василий купил билет на место с номером X, а Петр — на место с номером Y .
Все поезда в структуре РЖД комплектуются вагонами с одинаковым числом посадочных мест, равным K. Нумерация мест сквозная: в первом вагоне расположены места с номерами от 1 до K, во втором вагоне — места с номерами от K + 1 до 2K, и так далее. Помогите Василию посчитать,сколько раз он должен перейти из одного вагона в соседний для встречи с Петром.

Входные данные
В первой строке входных данных записано целое число K (1 ≤ K ≤ 109) — число посадочных мест в каждом вагоне.
Во второй строке записано целое число X — номер места Василия.
В третьей строке записано целое число Y (1 ≤ X < Y ≤ 109) — номер места Петра.

Выходные данные
Выведите одно целое число — количество переходов Василия из одного вагона в соседний.
 
Примеры
Входные данные Выходные данные
1 3
3
7
2
Мистер Дункан, директор магазина "Игрушечный сундук Дункана", ежегодно под Рождество жертвует детским фондам определенную сумму денег.  Сумма, которая уходит на благотворительность всегда равна минимальному числу, которое делится на 2 и на число игрушек, проданных за год. По заданному числу проданных игрушек за год (N), определите сумму, которую пожертвует мистер Дункан. 

Входные данные
На вход подается положительное целое число N (1<=N<=109).

Выходные данные
Выведите одно число - сумму, которую пожертвует мистер Дункан.
 
Примеры
Входные данные Выходные данные
1 3 6
2 10 10
3 999999999 1999999998

На сковородку одновременно можно положить k котлет. Каждую котлету нужно с каждой стороны обжаривать m минут непрерывно. За какое наименьшее время удастся поджарить с обеих сторон n котлет?

Входные данные
Вводятся 3 числа: k, m и n. Все числа не превосходят 32000.

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


Примеры
Входные данные Выходные данные
1 1
5
1
10
В каждую крайнюю клетку квадратной доски поставили по фишке. Могло ли оказаться, что выставлено ровно k фишек? (Например, если доска 2х2, то выставлено 4 фишки, а если 6х6 - то 20).

Входные данные
Вводится одно натуральное число k, не превосходящее 30000

Выходные данные
Программа должна вывести слово YES, если существует такой размер доски, на который будет выставлено ровно (не больше, и не меньше) k фишек, в противном случае - вывести слово NO.
Примеры
Входные данные Выходные данные
1 20 YES
2 13 NO
Громозека любит числовые печеньки. Среди всех числовых печенек Громозека ест только такие, на которых сумма цифр записанного числа в десятичной системе счисления является делителем самого числа. Вам дается число, записанное на печеньке. Определите будет ли ее есть Громозека или нет.

Входные данные
На вход подается целое число N (1<=N<=109).

Выходные данные
Выведите ответ Yes, если Громозека будет есть такую печеньку, No - если не будет.
 

 

Примеры
Входные данные Выходные данные
1 12 Yes
2 101 No

 

Перед празднованием Дня программиста офис IT компании украсили последовательностью чисел длины N, a = {a1, a2, a3, ..., aN}. Багз Хантер, сотрудник отдела тестирования, хотел бы поиграть с этой последовательностью. В частности, он хотел бы повторить следующую операцию как можно больше раз.
Для каждого i, удовлетворяющего 1<=i<=N, выполните одно из следующих действий: «разделить ai на 2» и «умножить ai на 3». Нельзя выполнять «умножить ai на 3» сразу для каждого i в течении одной операции, значение ai после любого действия должно быть целым числом. 
Одну операцию Багз Хантер делает за 1 секунду независимо от количества чисел в последовательности. Определите максимум через сколько секунд Багз Хантер вернется к своей работе?

Входные данные
В первой строке записано целое число N (1<=N<=10000). Во второй строке записаны N целых чисел ai (1<=ai<=109).

Выходные данные
Выведите одно число -  максимальное количество секунд, через которое Багз Хантер вернется к своей работе.
 

 

Примеры
Входные данные Выходные данные Пояснение
1 3
5 2 4
3 Последовательность изначально 5,2,4.
Три операции можно выполнить следующим образом:
- сначала умножьте a1 на 3, умножьте a2 на 3 и разделите a3 на 2. Теперь последовательность 15,6,2;
- затем умножьте a1 на 3, разделите a2 на 2 и умножьте a3 на 3. Теперь последовательность 45,3,6;
- наконец, умножьте a1 на 3, умножьте a2 на 3 и разделите a3 на 2. Теперь последовательность 135,9,3.
Далее, с каждым числом можно выполнить только умножение на 3, но это действие недопустимо сразу для всех чисел ai.
Поэтому ответ 3.
2 4
631 577 243 199
0  
3 10
2184 2126 1721 1800 1024 2528 3360 1945 1280 1776
39  

 

Напишите программу, которая переводит данный символ в верхний регистр.

Входные данные
Задан один символ c.

Выходные данные
Если символ является строчной буквой латинского алфавита (то есть буквой от a до z), выведите вместо него аналогичную заглавную букву, иначе выведите тот же самый символ (такая операция называется "перевод в верхний регистр").
 
Примеры
Входные данные Выходные данные
1 e E
2 B B
✓ 46✗ 64400лёгкаяВойти и решать
Громозека любит соревнования по программированию. Сегодня он примет участие в конкурсе в STCoder. На этой площадке используются 24-часовые часы. Например, 21:00. обозначается как «21 o'clock».
Текущее время - A часов, а соревнование начнется ровно через B часов. Определите время начала соревнования? Ответ дайте в 24-часовом формате.

Входные данные
Во входной строке содержится два целых числа A и B (\(0<=A,B<=23\)), записанных через один пробел.

Выходные данные
Выведите час начала конкурса в 24-часовом формате.
 

 

Примеры
Входные данные Выходные данные
1 9 12 21
2 19 0 19
3 23 2 1

 

Черепашка ползет по полу, который уложен квадратной плиткой со стороной A см. Начало пути Черепахи в точке X. Черепашка успела проползти расстояние D см, прежде чем хозяин взял ее на руки. Определите сколько клеток (частично или целых) успела проползти Черепашка.

Входные данные
Первая строка содержит число A – длина стороны одной плитки. Вторая строка содержит число X - координата точки, с которой Черепашка начала свой путь. Третья строка - число D - расстояние, которое проползла Черепаха. Ось OX направлена вправо. Крайняя плитка в ряду, по которому ползет Черепашка находится в начале координат. Все числа целые, не превосходящие \(2\cdot10^9 \), числа A, D – положительные, число X – положительное или равно 0.

Выходные данные
Вывести одно число – количество плиток, которые Черепашка полностью или частично успела проползти.
Считается, что Черепашка проползла плитку, если условно проведенная линия пути Черепашки имеет ненулевую длину, то есть касание линии пути и края плитки не считается.

 

Примеры
Входные данные Выходные данные Пояснение
1 10
15
35
4 Сторона плитки (сторона клетки на рисунке) А = 10.
Черепашка начала движение с координаты Х = 15, и прошла 35.
Черепаха прошла полностью или частично 4 плитки.

 

Громозека решил построить строку, которая начинается с A и заканчивается Z, извлекая подстроку строки s (то есть последовательную часть s). Найдите наибольшую длину строки, которую может построить Громозека. Гарантируется, что всегда существует подстрока s, которая начинается с A и заканчивается Z.

Формат входных данных
На вход подается строка s (1 <= длина строки s <= 2·105 ), состоящая из больших английских букв (A-Z).

Формат выходных данных
Выведите на экран ответ на задачу.
 

Пояснение к примерам
1. В первом примере, убрав символы с седьмого по одиннадцатый, можно построить строку ASDFZ, которая начинается с A и заканчивается Z.

✓ 91✗ 162600лёгкаяВойти и решать
Дано целое число N. Найдите количество положительных делителей числа N!, по модулю \(10 ^ 9 + 7\).

Входные данные
На вход подается целое число N (\(1<=N<=10^3\)).

Выходные данные
Выведите на экран количество положительных делителей числа N!, по модулю \(10 ^ 9 + 7\).
 

 

Примеры
Входные данные Выходные данные
1 3 4
2 6 30
3 1000 972926972

 

У вас есть целочисленная переменная x. Первоначально \(x = 0\). Кто-то дал вам строку S длины N, и, используя эту строку, вы выполнили следующую операцию N раз. В i-й операции вы увеличили значение x на 1, если Si = I, и уменьшили значение x на 1, если Si = D. Найдите максимальное значение, которое принимает x во время операций (в том числе до первой операции и после последней операции).

Формат входных данных
В первой строке задается число (\(1<=N<=100\)), во второй - строка S. Длина строки N. Строка содержит только символы и D.

Формат выходных данных
Выведите максимальное значение x, полученное во время операций.
В качестве новогоднего подарка Громозека получил строку s длиной 19 следующего формата:
[пять строчных английских букв], [семь строчных английских букв], [пять строчных английских букв].
Громозека хочет преобразовать строку s, разделенную запятыми, в строку, разделенную пробелами. Напишите программу для выполнения преобразования за него.

Входные данные
На вход подается одна строка s, длина строки ровно 19 символов. Шестой и четырнадцатый символы в s - это ,. Остальные символы - строчные буквы английского алфавита (a-z).

Выходные данные
Выведите строку после преобразования
 

 

Примеры
Входные данные Выходные данные
1
happy,newyear,enjoy
happy newyear enjoy

 

✓ 81✗ 107400лёгкаяВойти и решать
Поделиться
Класснуть