- Описание
- Отправленные решения
358. В бухгалтерии всё перепутали
Подписчики Яндекс Плюса могут получать и тратить баллы в сервисах Яндекса. Для правильного учёта баллов, сервисам нужно знать сколько их баллов ещё не потрачено пользователями.
Перед первой тратой баллов каждый пользователь получает одно или несколько начислений, которые в сумме дают его баланс. После этого клиент может списать любое число баллов, не превышающих его баланс. Учёт потраченных баллов ведётся по методу FIFO (first in, first out), то есть каждое списание тратит баллы по порядку начисления от самых ранних к самым поздним.
Вам нужно, зная историю транзакций всех пользователей, посчитать баланс каждого клиента по каждому из сервисов начислений.
Формат ввода
На вход даётся csv-файл с тремя колонками:
id
: айди клиента, совершившего транзакцию (int);service
: название сервиса, который начислил или списал баллы пользователя (string);amount
: сумма транзакции кэшбэка (int).
Начисления это транзакции с положительным amount
, списания — с отрицательным.
Все транзакции расположены в хронологическом порядке и отсортированы по пользователям
Формат вывода
csv-файл с тремя колонками:
id
: айди клиента, совершившего транзакцию (int);service
: название сервиса, который начислил или списал баллы пользователя (string);balance
: баланс пользователя в этом сервисе (int).
Если у пользователя не было начислений от какого-то сервиса, то баланс в нём печатать не нужно, так как сервисы сами знают, кому они не начисляли баллы.
Выходной файл должен быть отсортирован по возрастанию по полям id
и service
.
Ограничения
Ограничение времени
1 с
Ограничение памяти
64 МБ