Задание №168133: Задание 4
Задача 4. ВелоForces Имя входного файла: стандартный ввод Имя выходного файла: стандартный вывод Ограничение по времени: 1 секунда Ограничение по памяти: 256 мегабайт Слон Семён состоит в спортивном клубе «ВелоForces». В нём всем участникам клуба назначаются уровни. Чтобы получить уровень K, нужно принять участие хотя бы в K заездах длиной хотя бы K километров каждый. Уровень повышается всегда, когда это возможно. Слон Семён помнит дистанции всех своих заездов. Помогите ему определить свой уровень. Формат входных данных Первая строка входных данных содержит одно целое число n (1 6 n 6 105) — количество заездов. Каждая из следующих n строк содержит одно целое число a (1 6 a 6 109) — длину очередного i i заезда. Формат выходных данных Выведите одно целое число — рейтинг слона Семёна. Система оценки Решения, правильно работающие при n 6 15, будут оцениваться в 20 баллов. Решения, правильно работающие при n 6 1000, будут оцениваться в 50 баллов. Решения, правильно работающие при a 6 105, будут оцениваться в 80 баллов. i Пример стандартный ввод стандартный вывод 5 3 3 1 4 1
Что проверяет это задание
Задание относится к теме «Задание 4» и рассчитано на уровень 8 класса. Для решения понадобятся:
- анализ условия
- пошаговое рассуждение
- проверка результата
Источник: ВсОШ в Москве — официальный архив · 2025
Качество материала
Показываем, из чего состоит страница и можно ли проверить материал по первоисточнику.
Последняя проверка решения:
Происхождение задания
- Банк заданий
- ВсОШ в Москве — официальный архив
- Организатор
- Редакция «Я сам решу»
- Год материала
- 2025
- Материалы
- 2 файла
Связанные понятия
План самостоятельного решения
- Перепишите известные данные и отдельно сформулируйте, что требуется найти или доказать.
- Свяжите условие с темой «Задание 4» и выберите подходящее правило, формулу или способ рассуждения.
- Запишите промежуточные шаги: это помогает заметить потерянный знак, случай или логический переход.
- Сверьте результат со всеми ограничениями условия и только затем откройте подробный разбор.
Ориентировочное время: 15 минут.
Закрепить тему
После разбора попробуйте решить ещё десять заданий по предмету «Искусственный интеллект». Вариант формируется заново, а ответы можно сразу проверить.
Решение по шагам
Задача 4. ВелоForces
Значение k может быть от 1 до n, т.к. слон Семён совершил хотя бы 1 заезд длиной 1 км, а всего
он совершил n заездов.
Можно перебрать значения k от 1 до n и для каждого k посчитать, сколько в данном массиве
чисел, которые не меньше k. Если это количество также не меньше k, то слон Семён достиг уровня
k или выше. Запомним наибольшее из таких подходящих k. Пример такого решения.
n = int (input ())
a = [ int (input ()) for i in range(n )]
ans = 0
for k in range(1 , n + 1):
cnt = 0
for val in a :
if val >= k :
cnt += 1
if cnt >= k :
ans = k
print ( ans )
Такое решение имеет сложность O(n2) и набирает 50 баллов.
Для полного решения заметим, что подсчитывать числа, которые не меньше определённого зна-
чения удобно, если отсортировать значения по неубыванию. Пусть массив отсортирован и индексы
элементов массива начинаются с нуля. Если нулевой элемент массива не меньше n, то все остальные
элементы массива тоже не меньше n и поэтому уровень слона Семёна будет равен n. Если это не
так, но значение элемента массива с индексом 1 не меньше n (cid:0) 1, то уровень слона Семёна будет
равен n (cid:0) 1. Если и это неверно, но при этом элемент массива с индексом 2 не меньше n (cid:0) 2, то
уровень слона Семёна будет n (cid:0) 2. То есть нам нужно найти такое минимальное k, что a[k]>=n−k,
тогда уровень слона Семёна будет n (cid:0) k.
Такое решение имеет сложность O(nlogn) (ввиду использования быстрой сортировки) и наби-
рает 100 баллов.
n = int (input ())
a = [ int (input ()) for i in range(n )]
a . sort ()
k = 0
while a [ k ] < n − k :
k += 1
print (n − k)
Используемые формулы
n = int (input ())a = [ int (input ()) for i in range(n )]ans = 0cnt = 0if val >= k :cnt += 1
Самопроверка после решения
- Я использовал все данные из условия и не добавил неподтверждённых предположений.
- Каждый переход в рассуждении объяснён правилом, формулой или ранее доказанным фактом.
- Ответ соответствует вопросу, а обозначения и единицы измерения записаны однозначно.
- Я сравнил свой ход решения с разбором и понял причину каждого отличия.
Типичные ошибки
- Пропустить часть условия.
- Сделать вывод без проверки промежуточного шага.
- Записать только ответ без объяснения.