(В. Ланская, Р. Ягафаров) В некотором городе существует база данных о зарегистрированных автомобильных нарушениях за последние полгода. Марка каждого автомобиля закодирована как целое число, каждый автомобиль отнесен к одному из трёх классов: эконом, средний, премиум. Возможно, что автомобили одной марки имеют разные классы, это указывает на различные варианты комплектации. В таком случае каждую комбинацию «марка – класс» следует рассматривать как отдельную марку. На основе этой статистики необходимо определить водители какой марки автомобилей в сумме заплатили больше всего за все нарушения. Если таких марок несколько, то выбирается марка с наибольшим номером, и если и таких марок несколько, то марка с наивысшим классом.
Входные данные представлены в файле следующим образом. В первой строке входного файла записано натуральное число \(N,\) не превышающее \(10~000\) — количество нарушений, которые занесены в базу. В каждой из следующих \(N\) строках через пробел записаны три числа — код марки автомобиля (от \(1000\) до \(9999),\) сумма штрафа (натуральное число, не превышающее \(5000)\) и код класса \((1\) — эконом, \(2\) — средний, \(3\) — премиум).
Запишите в ответе два числа: код марки с наибольшей суммой штрафов и саму сумму штрафов, которую заплатили водители данной марки автомобиля.
Пример входного файла:
\(4\)
\(6666 \,\, 750 \,\, 1\)
\(2222 \,\, 1050 \,\, 2\)
\(3333 \,\, 550 \,\, 1\)
\(2222 \,\, 1100 \,\, 2\)
При таких исходных данных наибольшую сумму \((1050 + 1100 = 2150)\) заплатили водители марки \(2222\) класса \(2.\) Ответ: \(2222 \,\, 2150.\)
Решение:
Python
fd = open('26.txt')
N = int(fd.readline())
penalties = {}
for line in fd:
m, p, cl = map(int, line.split())
penalties[(m, cl)] = penalties.get((m, cl), 0) + p
arr = list(zip(penalties.values(), penalties.keys()))
arr.sort(reverse=True)
print(arr[0][1][0], arr[0][0])
Ответ: \(2595 \,\, 13429\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене