Первая серия превышений просмотров

тема: Временные ряды и окна · уровень: средний

Условие

В файле data.csv находятся дневные показатели базы фильмов онлайн-кинотеатра. Каждая строка соответствует одному календарному дню, строки расположены строго по возрастанию даты.

Требуется найти первый отсчёт, в котором выбранный показатель не меньше заданного порога p уже k дней подряд, начиная не раньше указанной даты. Отсчёты нумеруются с 1 по порядку строк файла.

Для строки с номером i введём значение a_i выбранного столбца. Строка подходит, если значение не пропущено и a_i >= p. Требуется вывести наименьший номер строки i, для которого подходят все строки с номерами i-k+1, i-k+2, ..., i. Пропущенное значение разрывает последовательность подходящих дней.

При равенстве значения порогу оно считается подходящим. Если подходящей серии нет, требуется вывести -1.

Формат ввода

Рядом с программой расположен файл data.csv в кодировке UTF-8 с разделителем-запятой. Первая строка файла содержит заголовки. В файле имеются столбцы:

В стандартный ввод поступает одна строка из четырёх значений через пробел: column p k start_date.

column равно views или completions, p — целый порог, k — требуемая длина серии, start_date — дата в формате YYYY-MM-DD. Учитываются только строки, у которых date не меньше start_date.

Формат вывода

Выведите одно целое число — номер первого отсчёта, завершающего серию из k подходящих дней, или -1, если такой серии нет.

Выведите целое число без округления и без дробной части.

Ограничения

В файле от 300 до 2000 строк данных.

Дата лежит в диапазоне от 2024-01-01 до 2025-12-31. Даты не повторяются и идут строго по возрастанию.

Значения views лежат в диапазоне от 0 до 50000, значения completions — от 0 до 20000, значения avg_watch_minutes — от 0.0 до 300.0. В каждом числовом столбце могут встречаться пустые строки.

0 <= p <= 60000, 1 <= k <= 100, start_date совпадает с датой одной из строк файла.

Решить задачу с автопроверкой на Python →

Куда дальше