ЕГЭ-26. Обработка массива целых чисел. Сортировка

244 задачи
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
Для выступления гимнастки используют ленты, которые после выступления кладут на стол. Папа самой лучшей гимнастки Анны К., в ожидании награждения, решил записывать координаты начала и конца лент. Если лента свисала с левого края стола, то он ставил левую координату равной нулю, если лента свисала с правого конца стола, то он ставил правую координату равной нулю. Если лента свисала с двух сторон, то он записывал обе координаты равной нулю. У вас есть файл с данной информацией. Определите, в скольки точках стола получилась самая большая толщина покрытия и чему она равна. Стол имеет длину Lмм. По окончании выступления всех гимнасток, на столе оказалось N лент. У некоторых лент свисает со стола только один конец, у некоторых оба. Все ленты лежат горизонтально. Ленты складываются друг на друга. 
 
Входные данные
В первой строке файла записаны два числа - L, N (1 <= L <= 10000, 1 <= N <= 10000). В слеующих строках записаны по 2 числа - l, r (1 <= l <= r <= L) - левые и правые концы лент относительно левого края стола.

В ответе укажите два числа через пробел - максимальную толщину ленточного покрытия стола и количество точек с такой толщиной. 
 
Примеры
Входные данные Выходные данные
1
39 4
3 21
3 15
2 20
3 17
4 13


Файл к заданию
На планете Блук находится самый большой суперстадион Галактики. На суперстадионе 10 000 рядов, пронумерованных начиная с 1. В каждом ряду  10 000 мест, пронумерованных начиная с 1. К текущему моменту, на концерт Суперзвезды продали N билетов. В файле указана информация о проданных билетах: номер ряда и номер места в данном ряду. Определите, в каком ряду больше всего свободных мест, находящихся рядом. Если таких мест одинаковое количество в нескольких рядах, то укажите минимальный номер ряда. А также укажите минимальный номер места, с которого начинаются такие свободные места. 

Входные данные
Первая строка входного файла содержит целое число N – общее количество проданных билетов. Каждая из следующих N строк содержит 2 целых числа: номер ряда и номер места в данном ряду.

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

Пример организации исходных данных во входном файле (при 5 рядах и 5 местах в ряду):

17
1 2
2 3
2 4
3 1
3 2
4 1
4 2
4 3
5 1
5 5
5 4
5 2
5 3
3 4
3 5
4 5
1 5


Ответ: 1 3

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

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

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

Если самолет прилетел в 12:00, а вылетел в 12:01, то считается, что он пробыл в аэропорту 2 минуты.

Файл к заданию
 
Примеры
Входные данные Выходные данные
1 6
09:00 10:07
10:20 11:35
12:00 17:00
11:00 11:30
11:20 12:30
11:30 18:15
4 1
Школьники собрались в суперкинотеатр на премьеру нового суперфильма. Организатор закупил для всех билеты на места в нескольких рядах. Билеты именные, поэтому известно, какие места заняты, а какие нет.  Вход в зал осуществляется возле последнего ряда, со стороны первого места. Организотор для себя выбирает ряд, который ближе всего к выходу (то есть ряд с наибольшим номером), в котором есть такие два соседних места, что слева и справа от них в том же самом ряду места уже заняты. Из этих двух мест он садится на место с наименьшим номером. Гарантируется, что есть хотя бы один ряд, удовлетворяющий условию.

Входные данные 
В первой строке входного файла находится число:  N – количество занятых мест (натуральное число, не превышающее 10 000). В следующих N строках находятся пары чисел: ряд и место выкупленного билета, не превышающие 100 000.

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

Пример входного файла:
10
14 5
14 10
14 7
15 10
15 4
15 7
22 23
22 19
22 55
22 40
В данном примере есть следующие свободные места, удовлетворяющие условию: в 14 ряду места 8 и 9, в ряду 15 месте 5 и 6. Выбираем наибольший номер ряда: 15 и наименьший номер места: 5. В ответе нужно указать: 15 5.

Файл к заданию
В магазине игрушек распродажа. В распродаже участвуют K  самых дорогих товаров. Скидка на них составляет 20%.  Определите цену самого дорогого товара, не участвующего в распродаже, а также целую часть от суммы всех скидок.

Входные данные
В файле в первой строке содержит два числа, записанные через пробел: N – общее количество цен (1<=N<=10 000) и K – количество товаров со скидкой. В следующих N строках находятся значения цены каждого из товаров (все числа натуральные, не превышающие 10 000), каждое в отдельной строке.  

Запишите в ответе два числа через пробел: сначала цену самого дорогого товара, не участвующего в распродаже, а затем целую часть от суммы всех скидок.
 
Примеры
Входной файл Ответ
1 10 3
1800
3600
3700
800
2600
2500
1800
1500
1900
1200
2500 1980


Файл к заданию 
 
 
Имеются сведения о результатах соревнований по школьному многоборью. Многоборье состоит из соревнований по четырем видам спорта, участие в каждом из которых оценивается баллами от 0 до 10 (0 баллов получает ученик, не принимавший участия в соревнованиях по данному виду спорта). Победители определяются по наибольшей сумме набранных баллов. Известно, что общее количество участников соревнований не превосходит 1000. 
Входные данные представлены в файле 26-3.txt следующим образом.
В первой строке вводится количество учеников, принимавших участие в соревнованиях, N. Далее следуют N строк, имеющих следующий формат: 
<номер участника> <Баллы> ,
где:
 - <Номер участника> – целое число ;
- <Баллы> - строка, содержащая четыре целых числа, разделенных пробелом, соответствующих баллам, полученным на соревнованиях по каждому из четырех видов спорта.
При этом <Номер участника> и <Баллы> разделены одним пробелом.

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

Пример входного файла:         
5
1 5 8 6 3 
2 9 9 5 7 
3 1 2 3 4  
4 0 10 5 7 
5 8 7 7 8 

При таких исходных данных получается четыре победителя, поэтому ответ для приведенного примера: 10 10
На складе для поднятия партии коробок различной массы выделен грузоподъемник, но его грузоподъёмность ограничена, поэтому поднять сразу все коробки не удастся. В первую очередь надо погрузить четыре самые тяжелые коробки. На оставшееся после этого место стараются взять как можно большее количество коробок. Если это можно сделать несколькими способами, то выбирают такой способ, при котором поднимаемая масса коробок будет макcимальная. 
Известны количество грузов, масса каждого из них и грузоподъёмность подъемника.
Необходимо определить количество и общую массу коробок, которые будут вывезены при погрузке по вышеописанным правилам.

Входные данные представлены в файле 26-4.txt следующим образом. В первой строке входного файла записаны два целых числа: N – общее количество коробок и M – грузоподъёмность подъемника в кг. Каждая из следующих N строк содержит одно целое число – массу груза в кг. В ответе запишите два целых числа: сначала максимально возможное количество коробок, затем их общую массу.
Пример организации исходных данных во входном файле: 
8 800
110
70
130
140
80
90
160
45
Ответ: 7 780

В данном случае ответ сформировался следующим образом: сначала выбрали самые большие коробки массой 160+140+130+110=540, далее у нас есть несколько вариантов добавить коробки, из которых выбираем сочетание: 90+80+70, итого 780.
Имеются сведения о результатах соревнований по школьному многоборью. Многоборье состоит из соревнований по четырем видам спорта, участие в каждом из которых оценивается баллами от 0 до 10 (0 баллов получает ученик, не принимавший участия в соревнованиях по данному виду спорта). Победители определяются по наибольшей сумме набранных баллов. Известно, что общее количество участников соревнований не превосходит 1000. 

Входные данные представлены в файле 26-2.txt следующим образом.
В первой строке вводится количество учеников, принимавших участие в соревнованиях, N. Далее следуют N строк, имеющих следующий формат: 
<номер участника> <Баллы> ,
где:
 - <Номер участника> – целое число ;
- <Баллы> - строка, содержащая четыре целых числа, разделенных пробелом, соответствующих баллам, полученным на соревнованиях по каждому из четырех видов спорта.
При этом <Номер участника> и <Баллы> разделены одним пробелом.

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

Пример входного файла:         
5
1 5 8 6 2 
2 9 9 5 7 
3 0 0 0 0  
4 0 10 5 7 
5 8 7 7 8 

При таких исходных данных получается четыре победителя, поэтому ответ для приведенного примера: 2 103
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов.
Известно, какой объём занимает файл каждого пользователя.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Входные данные представлены в файле 26-1.txt следующим образом. В первой строке входного файла находятся два числа: S – размер свободного места на диске (натуральное число, не превышающее 10 000) и N – количество пользователей (натуральное число, не превышающее 2000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке. 

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

Пример входного файла:
100 4
80
30
50
40
При таких исходных данных можно сохранить файлы максимум двух пользователей. Возможные объёмы этих двух файлов 30 и 40, 30 и 50 или 40
и 50. Наибольший объём файла из перечисленных пар – 50, поэтому ответ для приведённого примера: 2 50
 

На вход программы поступает последовательность из N целых положительных чисел. Рассматриваются все пары различных элементов последовательности, находящихся на расстоянии кратном 5 (разница в индексах элементов пары должна быть кратна 5, порядок элементов в паре не важен). Необходимо определить пару с максимальной суммой кратной 7. Если таких пар несколько, программа должна вывести любую из них.

Входные данные
В первой строке входных данных задаётся количество чисел N (\(1 <= N <= 10000\)). В каждой из последующих N строк записано одно целое положительное число, не превышающее 10 000.

Выходные данные
Программа должна вывести в первой строке два числа: пару элементов с максимальной суммой, находящихся в последовательности на расстоянии кратном 5, в которой сумма элементов кратна 7. Если ни одной подходящей пары нет, нужно вывести одно число 0.

 

Примеры
Входные данные Выходные данные
1 10
1
6
3
140
6
6
7
11
7
15
7 140

На вход программы поступает последовательность из N целых положительных чисел. Рассматриваются все пары различных элементов последовательности (элементы пары не обязаны стоять в последовательности рядом, порядок элементов в паре неважен). Необходимо определить пару с максимальной разностью, элементы которой находятся на расстоянии кратном K. Если таких пар несколько, вывести любую.

Входных данные
В первой строке входных данных задаётся количество чисел N и значение K (\(K+1 <= N <= 10000\)). В каждой из последующих N строк записано одно натуральное число, не превышающее 10000.

Выходные данные
В качестве результата программа должна вывести пару чисел, соответствующих условию задачи

 

Примеры
Входные данные Выходные данные
1 8 3
1
90
3
81
89
4
71
7
90 7
На вход программы поступает последовательность из N целых положительных чисел, все числа в последовательности различны. Рассматриваются все пары различных элементов последовательности, находящихся на расстоянии не меньше 4 (разница в индексах элементов пары должна быть 4 или более, порядок элементов в паре неважен). Необходимо определить количество таких пар, для которых сумма элементов кратна 8.

Входные данные
В первой строке входных данных задаётся количество чисел N (\(5 <= N <= 1000\)). В каждой из последующих N строк записано одно целое положительное число, не превышающее 10 000. 

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

 

Примеры
Входные данные Выходные данные Комментарий
1




15 
23 
31
4 Найденные пары: (1,15) (1,23) (1,31) (9,31)
111#34980
На вход программы поступает последовательность из N целых положительных чисел, все числа в последовательности различны. Рассматриваются все пары различных элементов последователь-ности, находящихся на расстоянии не менее, чем 4 (разница в индексах элементов пары должна быть 4 или более, порядок элементов в паре неважен). Необходимо определить максимальную сумму пары чисел кратную 112, при этом первый элемент пары должен быть больше второго (a[i] > a[j], i < j).
Описание входных и выходных данных
В первой строке входных данных задаётся количество чисел N (5 ≤ N ≤ 1000). В каждой из после-дующих N строк записано одно целое положительное число, не превышающее 10 000.
Программа должна вывести в первой строке одно число: максимальную сумму пары элементов, находящихся в последовательности на расстоянии не менее чем 4, в которых сумма элементов кратна 112, а во второй строке – числа, образующие пару, через пробел. Если ни одной подходя-щей пары нет, нужно вывести одно число –1.
 
Ввод Вывод

119 
62 
343 
50 
48 
105 
274
224
119 105

 

На городской олимпиаде по информатике участникам было предложено выполнить 3 задания, каждое из которых оценивалось по 25-балльной шкале. Известно, что общее количество участников первого тура олимпиады не превышает 250 человек. 

На вход программы подаются сведения о результатах олимпиады. В первой строке вводится количество участников N. Далее следуют N строк, имеющих следующий формат: 
<Фамилия> <Имя> <Баллы>

где <Фамилия> – строка, состоящая не более чем из 20 символов; 
- <Имя> – строка, состоящая не более чем из 15 символов; 
- <Баллы> – строка, содержащая три целых числа, разделенных пробелом, соответствующих баллам, полученных участником за каждое задание первого тура. При этом <Фамилия> и <Имя>, <Имя> и <Баллы> разделены одним пробелом.

Примеры входных строк:    
Петрова Ольга 25 18 16
Калиниченко Иван 14 19 15 

Напишите программу, которая будет выводить на экран фамилию и имя участника, набравшего максимальное количество баллов. Если среди остальных участников есть ученики, набравшие такое же количество баллов, то их фамилии и имена также следует вывести (по одному участнику в строке). При этом имена и фамилии можно выводить в произвольном порядке.
АЗС#15827

На автозаправочных станциях (АЗС) продается бензин с маркировкой 92, 95 и 98. В городе N был проведен мониторинг цены бензина на различных АЗС. 

Напишите эффективную по времени работы и по используемой памяти программу, которая будет определять для каждого вида бензина, сколько АЗС продают его дешевле всего. 

На вход программе в первой строке подается число данных N о стоимости бензина. В каждой из последующих N строк находится информация в следующем формате: 
<Компания> <Улица> <Марка> <Цена>

где <Компания> – строка, состоящая не более, чем из 20 символов без пробелов;
- <Улица> – строка, состоящая не более, чем из 20 символов без пробелов;
- <Марка> – одно из чисел – 92, 95 или 98;
- <Цена> – целое число в диапазоне от 1000 до 3000, обозначающее стоимость одного литра бензина в копейках. 

<Компания> и <Улица>, <Улица> и <Марка>, а также <Марка> и <Цена> разделены одним пробелом.

Пример входной строки: 
Синойл Цветочная 95 2250 
Программа должна выводить через пробел 3 числа – количество АЗС, продающих дешевле всего бензин марки 92, 95 и 98 соответственно. Если бензин какой-то марки нигде не продавался, то следует вывести 0. 

Пример выходных данных: 
12 1 0

Школьная олимпиада по информатике проводилась для учеников 7-11-х классов, участвующих в общем конкурсе. Каждый участник олимпиады мог набрать от 0 до 70 баллов. Для определения призеров олимпиады, сначала отбираются 25% участников, показавших лучшие результаты. Если у последнего участника, входящего в 25%, оказывается такое же количество баллов, как и у следующих за ним в итоговой таблице, все они считаются призерами только тогда, когда набранные ими баллы больше половины максимально возможных. Иначе все они не считаются призерами.

Напишите эффективную по времени работы и по используемой памяти программу, которая по результатам олимпиады будет определять минимальный балл призера олимпиады, и количество призеров в каждой параллели (среди 7-х, 8-х, 9-х, 10-х и 11-х классов отдельно). Гарантируется, что, хотя бы одного призера по указанным правилам, определить можно.

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

<Фамилия> <Имя> <класс> <баллы>,

где <Фамилия> – строка, состоящая не более, чем из 30 символов;
- <Имя> – строка, состоящая не более, чем из 15 символов;
- <класс> – число от 7 до 11;
- <баллы> – целое число от 0 до 70 набранных участником баллов.
<Фамилия> и <Имя>, <Имя> и <класс>, а также <класс> и <баллы> разделены одним пробелом.


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

Пример выходных данных:
63 
1 5 8 12 22

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

На вход программы подаются сведения о результатах предварительного тестирования. Известно, что общее количество участников тестирования не превосходит 500. 

В первой строке вводится количество абитуриентов, принимавших участие в тестировании, N. Далее следует N строк, имеющих следующий формат: 

<Фамилия> <Имя> <Баллы>,
где <Фамилия> – строка, состоящая не более чем из 20 символов;
<Имя> – строка, состоящая не более, чем из 15 символов;
<Баллы> – строка, содержащая два целых числа, разделенных пробелом – баллы, полученные на тестировании по каждому из двух предметов.
При этом <Фамилия> и <Имя>, <Имя> и <Баллы> разделены одним пробелом.

Пример входной строки:
Романов Вельямин 48 39
 
Напишите программу, которая будет выводить на экран фамилии и имена абитуриентов, потерпевших неудачу, то есть не допущенных к сдаче экзаменов в первом потоке. При этой фамилии должны выводиться в алфавитном порядке.
 
В соревнованиях по многоборью (из M видов спорта) участвуют N спортсменов (\(N < 1000\)) . На вход программе в первой строке подается число спортсменов N, во второй – число видов спорта M. В каждой из последующих N строк находится информация в следующем формате: 
<Фамилия> <Имя> <Баллы> ,
где <Фамилия> – строка, состоящая не более, чем из 20 символов без пробелов;
- <Имя> – строка, состоящая не более, чем из 12 символов без пробелов;
- <Баллы> – M целых чисел, обозначающие количество баллов, набранных спортсменом в каждом из видов многоборья. 
<Фамилия> и <Имя>, <Имя> и <Баллы>, а также отдельные числа в поле <Баллы> разделены ровно одним пробелом.
Пример входных строк: 
3
4
Иванов Сергей 100 30 78 13
Петров Антон 90 16 98 14
Сидоров Юрий 100 70 30 21 

Программа должна выводить результирующую таблицу, содержащую список спортсменов, отсортированный по убыванию суммы баллов, набранные суммы и занятые места.
В данном случае программа должна вывести: 
Иванов Сергей 221 1
Сидоров Юрий 221 1
Петров Антон 218 2
На вход программы подаются сведения о результатах соревнований по школьному многоборью. Многоборье состоит из соревнований по четырем видам спорта, участие в каждом из которых оценивается баллами от 0 до 10 (0 баллов получает ученик, не принимавший участия в соревнованиях по данному виду спорта). Победители определяются по наибольшей сумме набранных баллов. Известно, что общее количество участников соревнований не превосходит 100.
В первой строке вводится количество учеников, принимавших участие в соревнованиях, N. Далее следуют N строк, имеющих следующий формат: 
<Фамилия> <Имя> <Баллы> ,
где:
- <Фамилия> – строка, состоящая не более чем из 20 символов;
- <Имя> – строка, состоящая не более чем из 15 символов;
- <Баллы> - строка, содержащая четыре целых числа, разделенных пробелом, соответствующих баллам, полученным на соревнованиях по каждому из четырех видов спорта.
При этом <Фамилия> и <Имя>, <Имя> и <Баллы> разделены одним пробелом.

Примеры входных строк:        
Иванова Мария 5 8 6 3
Петров Сергей 9 9 5 7

Напишите программу, которая будет выводить на экран фамилии и имена трех лучших участников многоборья. Если среди остальных участников есть ученики, набравшие то же количество баллов, что и один из трех лучших, то их фамилии и имена также следует вывести. При этом имена и фамилии можно выводить в произвольном порядке.
 
На вход программе подаются сведения о номерах школ учащихся, участвовавших в олимпиаде. В первой строке сообщается количество учащихся N, каждая из следующих N строк имеет формат:
<Фамилия> <Инициалы> <номер школы>,
где <Фамилия> – строка, состоящая не более чем из 20 символов, <Инициалы> – строка, состоящая из 4-х символов (буква, точка, буква, точка), <номер школы> – не более чем двузначный номер. <Фамилия> и <Инициалы>, а также <Инициалы> и <номер школы> разделены одним пробелом. Пример входной строки:
Иванов П.С. 57
Требуется написать как можно более эффективную программу , которая будет выводить на экран информацию, из какой школы было меньше всего участников (таких школ может быть несколько). При этом необходимо вывести информацию только по школам, пославшим хотя бы одного участника. Если таких школ несколько, то список выводить в столбик.
Следует учитывать, что \(N>=1000\).
 
Поделиться
Класснуть