Бесплатный интенсив по информатике

3 огненных вебинара, домашние задания, беседа курса, личный кабинет, связь с преподавателем и многое другое.
Курс стартует 28 января.

Подробнее об интенсиве

Задание 26. Алгоритмы сортировки. Обработка целочисленной информации.. ЕГЭ 2025 по информатике

За это задание ты можешь получить 2 балла. На решение дается около 30 минут. Уровень сложности: высокий.
Средний процент выполнения: 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

Ответ:
Показать решение
Бесплатный интенсив
Показать еще

Бесплатный интенсив по информатике

3 огненных вебинара, домашние задания, беседа курса, личный кабинет, связь с преподавателем и многое другое.
Курс стартует 28 января.

Бесплатный интенсив