Условие

Биржа принимает лимит-заявки одного инструмента.

Каждая заявка описывается шестью полями и поступает в систему в порядке возрастания order_id (это же порядок их появления во входном файле).

При встрече BID- и ASK-заявок сделка совершается, если лучшая цена покупки ≥ лучшая цена продажи. Причем сделка происходит по цене той заявки, что была добавлена ранее.

Первой выбирается заявка с лучшей ценой (для BID чем выше - тем лучше, для ASK - чем ниже), а при равенстве цены — с меньшим order_id (FIFO).

По результатам всех сделок нужно посчитать статистику для каждого счёта (account_id), более подробно написано в формате выходных данных.


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

Во входном файле CSV-таблица со строкой заголовка:

order_id,type,account_id,dir,price,amount

далее — N (1 ≤ N ≤ 2·10^5) строк вида

1,limit,12345,1,10.5,100

Имя поля Тип Описание
order_id 64-bit int уникальный идентификатор заявки
type строка всегда строка limit
account_id 64-bit int номер счёта
dir int {0,1} 0 — BID (покупка), 1 — ASK (продажа)
price float цена лота
amount 64-bit int количество лотов

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

CSV-таблица со строкой заголовка

account_id,saldo,position,turnover,trade_amount

и одной строкой для каждого счёта (порядок строк — по возрастанию account_id).