Сумма максимальных показаний квартиры

тема: Таблицы: фильтр и группировка · уровень: средний

Условие

В доме показания электросчётчиков передаются несколько раз в течение расчётного месяца. Для одной квартиры и одного месяца могут встретиться несколько записей: например, после повторной передачи или проверки.

В каждой записи указаны номер квартиры, номер месяца и переданное значение расхода электроэнергии в киловатт-часах. Значение -1 означает пропуск: показание не было получено и не учитывается.

Для квартиры из запроса и каждого месяца с хотя бы одним известным показанием определяется максимальное известное показание. Требуется найти сумму таких максимумов по всем месяцам этой квартиры.

Если a — квартира из запроса, а V(a, m) — множество всех известных показаний квартиры a за месяц m, то требуется вычислить

S(a) = Σ max(V(a, m)),

где сумма берётся только по месяцам, для которых множество V(a, m) не пусто. При равенстве наибольших показаний они считаются одинаковыми, поэтому результат не изменяется.

Формат ввода

В первой строке задано целое число n — количество записей показаний.

В следующих n строках записаны по три целых числа: apartment, month, reading — номер квартиры, номер месяца и показание соответственно.

В последней строке задано целое число query_apartment — номер квартиры из запроса.

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

В stdout выводится одно целое число — сумма максимальных известных показаний по месяцам для квартиры из запроса.

Дробная часть отсутствует, округление не применяется.

Ограничения

1 ≤ n ≤ 2000.

1 ≤ apartment ≤ 100000.

1 ≤ query_apartment ≤ 100000.

1 ≤ month ≤ 12.

reading = -1 или 0 ≤ reading ≤ 100000.

Номер квартиры из запроса встречается хотя бы в одной записи с показанием, отличным от -1.

Месяц, в котором для квартиры из запроса есть только значения -1, не участвует в сумме. Строковые поля отсутствуют.

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

Куда дальше