Бесплатный интенсив по информатике
3 огненных вебинара, домашние задания, беседа курса, личный кабинет, связь с преподавателем и
многое другое.
Курс стартует 28 января.
Подробнее об интенсиве
Задание 26. Алгоритмы сортировки. Обработка целочисленной информации.. ЕГЭ 2025 по информатике
Средний процент выполнения: 48.6%
Ответом к заданию 26 по информатике может быть развернутый ответ (полная запись решения с обоснованием выполненных действий).
Задачи для практики
Задача 1
Спортсмены на дисциплине "Прыжки в длину" пытаются победить в соревновании. Каждому спортсмену даётся 3 попытки, из которых выбирается лучшая. Найдите значение лучшего прыжка спорстмена, который занял 10-ое место.
Входные данные: в первой строке вводится число N (натуральное, не превышает 1000) - количество спортсменов на соревновании, в каждой из следующих N строк записано три числа (Натуральные, не превышает 10000) - длина прыжка в сантиметрах в каждой из трёх попыток.
Выходные данные: одно число - значение лучшего прыжка спорстмена, который занял 10-ое место.
В качестве ответа на это задание прикрепите код программы, а также напишите ответ, который выдала программа для прикреплённого файла.
Решение
Пример решения на Python:
def bubble_sort(a):
for i in range(len(a)):
for j in range(len(a) - 1 - i):
if a[j] < a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
f = open("file.txt")
i = 0
a = []
for st in f:
if i == 0:
N = int(st)
else:
n1, n2, n3 = map(int, st.split())
a.append(max(n1,n2,n3))
i += 1
bubble_sort(a)
print(a[9])
f.close()
Для прикреплённого файла программа выведет: 9973
Задача 2
Спортсмены на дисциплине "Прыжки в длину" пытаются победить в соревновании. Каждому спортсмену даётся 3 попытки, из которых выбирается лучшая. Найдите значение лучшего прыжка спорстмена, который занял 10-ое место.
Входные данные: в первой строке вводится число N (натуральное, не превышает 1000) - количество спортсменов на соревновании, в каждой из следующих N строк записано три числа (Натуральные, не превышает 10000) - длина прыжка в сантиметрах в каждой из трёх попыток.
Выходные данные: одно число - значение лучшего прыжка спорстмена, который занял 10-ое место.
В качестве ответа на это задание прикрепите код программы, а также напишите ответ, который выдала программа для прикреплённого файла.
Решение
Пример решения на Python:
def bubble_sort(a):
for i in range(len(a)):
for j in range(len(a) - 1 - i):
if a[j] < a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
f = open("file.txt")
i = 0
a = []
for st in f:
if i == 0:
N = int(st)
else:
n1, n2, n3 = map(int, st.split())
a.append(max(n1,n2,n3))
i += 1
bubble_sort(a)
print(a[9])
f.close()
Для прикреплённого файла программа выведет: 9964
Задача 3
В Высшей Школе Экологии на факультете Экологии K бюджетных мест. N абитуриентов подали документы на этот факультет. Определить проходной балл на факультете. Проходной балл - количество баллов у последнего прошедшего абитуриента.
Входные данные: в первой строке вводятся два числа. Число N (натуральное, не превышает 1000) - количество абитурентов, подавших документы. Число K (натуральное, не превышает N) - количество бюджетных мест. В каждой из следующих N строк записано одно число (Натуральное, не превышает 310) - баллы абитурента за экзамены.
Выходные данные: одно число - проходной балл на факультете.
Пример входных данных:
5 3
300
290
170
240
275
Пример выходных данных:
275
В качестве ответа на это задание прикрепите код программы, а также напишите ответ, который выдала программа для прикреплённого файла.
Решение
Отсортируем список по убыванию, а затем выведем значение элемента массива, который находится на K-ом месте. Пример решения на Python:
def bubble_sort(a):
for i in range(len(a)):
for j in range(len(a) - 1 - i):
if a[j] < a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
f = open("file.txt")
i = 0
a = []
for st in f:
if i == 0:
N, K = map(int, st.split())
else:
a.append(int(st))
i += 1
bubble_sort(a)
print(a[K-1])
f.close()
Для прикреплённого файла программа выведет: 158
Задача 4
В магазине электроники "Эскалейдо" проводится рекламная акция. Каждый второй товар - бесплатно. Естественно, в руководстве магазина сидят умные люди, которые не хотят отдавать бесплатно Sony PS5 при покупке жвачки на кассе, поэтому хотят написать умный алгоритм, который поможет располагать пары "платный товар-бесплатный товар" таким образом, чтобы прибыль магазина была наибольшей. Задача: написать алгоритм, который определяет максимальную выручку магазина для каждого чека.
Входные данные: в первой строке вводится число N (натуральное, не превышает 1000) - количество товаров в чеке, в каждой из следующих N строк записано одно число (Натуральное, не превышает $10^6$) - стоимость купленного товара.
Выходные данные: одно число - максимальная выручка магазина с данного списка товаров.
Пример входных данных:
4
300
5000
600
900
Пример выходных данных:
5900
В качестве ответа на это задание прикрепите код программы, а также напишите ответ, который выдала программа для прикреплённого файла.
Решение
В итоговую стоимость пойдёт половина самых дорогих товаров. Поэтому нам необходимо отсортировать список по убыванию и посчитать сумму первой половины товаров (и ещё +1 товар для нечётного количества товаров). Пример решения на Python:
def bubble_sort(a):
for i in range(len(a)):
for j in range(len(a) - 1 - i):
if a[j] < a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
f = open("file.txt")
i = 0
a = []
for st in f:
if i == 0:
N = int(st)
else:
a.append(int(st))
i += 1
bubble_sort(a)
s = 0
for i in range(N//2+N%2):
s += a[i]
print(s)
f.close()
Для прикреплённого файла программа выведет: 13428503
Задача 5
Фанаты музыкальной группы Rammstein организуют поездку на концерт. Фанатов очень много, для их перевозки нужны автобусы. У организатора есть количество людей, а также информация о вместимости всех автобусов, свободных на данные дни. Определите наименьшее количество автобусов, необходимых для размещения всех фанатов, а также минимальное количество пустующих мест в автобусе для наименьшего количества автобусов.
Входные данные
В первой строке входного файла находятся два числа: X - количество фанатов (натуральное число, не превышает 3000) и N - количество автобусов (натуральное число, не превышает 1000). В следующих N строках находятся значения количества мест в каждом автобусе (натуральные числа, не превышают 100), каждое в отдельной строке.
В качестве ответа прикрепите код решённой задачи, а также укажите два числа: наименьшее количество автобусов и наименьшее количество пустующих мест.
Пример входного файла:
100 4
70
50
20
40
Пример выходных данных:
2 10
Решение
Пример решения на языке Python:
def bubble_sort(a):
for i in range(len(a)):
for j in range(len(a) - 1 - i):
if a[j] < a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
f = open("file.txt")
i = 0
a = []
for st in f:
if i == 0:
X, N = map(int, st.split())
else:
a.append(int(st))
i += 1
bubble_sort(a)
s = 0
i = -1
while s <= X:
i += 1
s += a[i]
kol = i+1
s -= a[i]
while i < N and s+a[i] >= X:
i += 1
print(kol, s+a[i-1]-X)
f.close()
Ответ, который выведет верная программа: 28 0
Задача 6
Грузчик Лёха закидывает мешки со строительным мусором в Газель. Мусора целая стройка, а Газель маленькая. Лёха хочет узнать, какое наибольшее количество мешков с мусором можно впихнуть в Газель, а также наибольший вес мешка, который можно погрузить в Газель при условии, что запихнули наибольшее количество мешков.
Входные данные
В первой строке входного файла находятся два числа: X - грузоподъёмность Газели в килограммах (натуральное число, не превышает 3000) и N - количество мешков с мусором (натуральное число, не превышает 1000). В следующих N строках находятся значения вес каждого мешка в килограммах (натуральные числа, не превышают 100), каждое в отдельной строке.
В качестве ответа прикрепите код решённой задачи, а также укажите два числа: наибольшее количество мешков и вес наибольшего мешка в Газели.
Пример входного файла:
100 4
70
50
20
40
Пример выходных данных:
2 70
Решение
Пример решения на языке Python:
def bubble_sort(a):
for i in range(len(a)):
for j in range(len(a) - 1 - i):
if a[j] > a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
f = open("file.txt")
i = 0
a = []
for st in f:
if i == 0:
X, N = map(int, st.split())
else:
a.append(int(st))
i += 1
bubble_sort(a)
s = 0
i = -1
while s <= X:
i += 1
s += a[i]
s -= a[i]
s -= a[i-1]
kol = i
while i < N and s+a[i] <= X:
i += 1
print(kol, a[i-1])
f.close()
Ответ, который выведет верная программа: 212 32
Задача 7
Грузчик Лёха закидывает мешки со строительным мусором в Газель. Мусора целая стройка, а Газель маленькая. Лёха хочет узнать, какое наибольшее количество мешков с мусором можно впихнуть в Газель, а также наибольший запас веса, который останется в Газели при условии, что запихнули наибольшее количество мешков.
Входные данные
В первой строке входного файла находятся два числа: X - грузоподъёмность Газели в килограммах (натуральное число, не превышает 3000) и N - количество мешков с мусором (натуральное число, не превышает 1000). В следующих N строках находятся значения вес каждого мешка в килограммах (натуральные числа, не превышают 100), каждое в отдельной строке.
В качестве ответа прикрепите код решённой задачи, а также укажите два числа: наибольшее количество мешков и наибольший запас веса в Газели.
Пример входного файла:
100 4
70
50
20
40
Пример выходных данных:
2 40
Решение
Пример решения на языке Python:
def bubble_sort(a):
for i in range(len(a)):
for j in range(len(a) - 1 - i):
if a[j] > a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
f = open("file.txt")
i = 0
a = []
for st in f:
if i == 0:
X, N = map(int, st.split())
else:
a.append(int(st))
i += 1
bubble_sort(a)
s = 0
i = -1
while s <= X:
i += 1
s += a[i]
s -= a[i]
print(i, X-s)
f.close()
Ответ, который выведет верная программа: 212 9
Задача 8
Грузчик Лёха закидывает мешки со строительным мусором в Газель. Мусора целая стройка, а Газель маленькая. Лёха хочет узнать, какое наибольшее количество мешков с мусором можно впихнуть в Газель, а также наибольший запас веса, который останется в Газели при условии, что запихнули наибольшее количество мешков.
Входные данные
В первой строке входного файла находятся два числа: X - грузоподъёмность Газели в килограммах (натуральное число, не превышает 3000) и N - количество мешков с мусором (натуральное число, не превышает 1000). В следующих N строках находятся значения вес каждого мешка в килограммах (натуральные числа, не превышают 100), каждое в отдельной строке.
В качестве ответа прикрепите код решённой задачи, а также укажите два числа: наибольшее количество мешков и наибольший запас веса в Газели.
Пример входного файла:
100 4
70
50
20
40
Пример выходных данных:
2 40
Решение
Пример решения на языке Python:
def bubble_sort(a):
for i in range(len(a)):
for j in range(len(a) - 1 - i):
if a[j] > a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
f = open("file.txt")
i = 0
a = []
for st in f:
if i == 0:
X, N = map(int, st.split())
else:
a.append(int(st))
i += 1
bubble_sort(a)
s = 0
i = -1
while s <= X:
i += 1
s += a[i]
s -= a[i]
print(i, X-s)
f.close()
Ответ, который выведет верная программа: 228 16
Задача 9
У профессора Виссариона Леонидовича настолько обширная библиотека книг, что все они не вмещаются в книжные шкафы. Чтобы хотя бы частично решить свою проблему, Виссарион Леонидович прикрутил к стене полку длиной X миллиметров. Он хочет узнать, какое наибольшее количество книг можно поставить на эту полку, а также размер наибольшего свободного пространства на полке при условии, что там стоит наибольшее количество книг.
Входные данные
В первой строке входного файла находятся два числа: X - длина полки в миллиметрах (натуральное число, не превышает 3000) и N - количество неразмещённых книг (натуральное число, не превышает 1000). В следующих N строках находятся значения толщин книг в миллиметрах (натуральные числа, не превышают 100), каждое в отдельной строке.
В качестве ответа прикрепите код решённой задачи, а также укажите два числа: наибольшее количество книг и размер наибольшего свободного пространства.
Пример входного файла:
100 4
70
50
20
40
Пример выходных данных:
2 40
Решение
Пример решения на языке Python:
def bubble_sort(a):
for i in range(len(a)):
for j in range(len(a) - 1 - i):
if a[j] > a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
f = open("file.txt")
i = 0
a = []
for st in f:
if i == 0:
X, N = map(int, st.split())
else:
a.append(int(st))
i += 1
bubble_sort(a)
s = 0
i = -1
while s <= X:
i += 1
s += a[i]
s -= a[i]
print(i, X-s)
f.close()
Ответ, который выведет верная программа: 198 17
Задача 10
В Высшей Школе Экологии на факультете Экологии K бюджетных мест. N абитуриентов подали документы на этот факультет. Определить проходной балл на факультете. Проходной балл - количество баллов у последнего прошедшего абитуриента.
Входные данные: в первой строке вводятся два числа. Число N (натуральное, не превышает 1000) - количество абитурентов, подавших документы. Число K (натуральное, не превышает N) - количество бюджетных мест. В каждой из следующих N строк записано одно число (Натуральное, не превышает 310) - баллы абитурента за экзамены.
Выходные данные: одно число - проходной балл на факультете.
Пример входных данных:
5 3
300
290
170
240
275
Пример выходных данных:
275
Решение
Копируем данные из txt в Excel.
Запоминаем первую строчку и удаляем ее.
Сортируем то, что осталось, по убыванию и ищем балл 471-го студента.
Почему именно 471? Потому что именно столько бюджетных мест.
Задача 11
7
29 5
40 25
42 103
42 106
46 23
46 26
Для приведённого примера ответ будет: 46 24
Решение
Для решения этого номера можно использовать язык программирования или электронную таблицу.
Рассмотрим пример решения на Python
f = open('26_p.txt', 'r') n = int(f.readline().strip()) x = [list(map(int, line.strip().split())) for line in f] x.sort() max_row = 0 pixel = 0 for i in range(n - 1): if x[i][0] == x[i + 1][0] and x[i][1] + 3 == x[i + 1][1]: if max_row < x[i][0]: max_row = x[i][0] pixel = x[i][1] + 1 print(max_row, pixel)
Ответ: 8631 7311
Задача 12
Спортсмены на дисциплине "Прыжки в длину" пытаются победить в соревновании. Каждому спортсмену даётся 3 попытки, из которых выбирается лучшая. Найдите значение лучшего прыжка спорстмена, который занял 10-ое место.
Входные данные: в первой строке вводится число N (натуральное, не превышает 1000) - количество спортсменов на соревновании, в каждой из следующих N строк записано три числа (Натуральные, не превышает 10000) - длина прыжка в сантиметрах в каждой из трёх попыток.
Выходные данные: одно число - значение лучшего прыжка спорстмена, который занял 10-ое место.
В качестве ответа на это задание прикрепите код программы, а также напишите ответ, который выдала программа для прикреплённого файла.
Решение
Пример решения на Python:
def bubble_sort(a):
for i in range(len(a)):
for j in range(len(a) - 1 - i):
if a[j] < a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
f = open("file.txt")
i = 0
a = []
for st in f:
if i == 0:
N = int(st)
else:
n1, n2, n3 = map(int, st.split())
a.append(max(n1,n2,n3))
i += 1
bubble_sort(a)
print(a[9])
f.close()
Для прикреплённого файла программа выведет: 9979