В данной задаче вам потребуется обработать набор заявок на торгах и сформировать по ним биржевой стакан.
Заявка — это желание какого-то участника торгов купить или продать акции. Для каждой заявки i известна ее цена pi, направление заявки di — покупка или продажа, а также количество акций qi, которые участник готов купить или продать по цене pi за акцию. Значение qi называется объемом заявки.
Все заявки с одинаковой ценой p и направлением d объединяются в так называемую аггрегированную заявку, цена которой также равна p, направление — d, а объём складывается из исходных заявок.
Биржевой стакан — это таблица из аггрегированных заявок, в которой сначала идут предложения продажи, отсортированные по убыванию цены, а затем предложения покупки, тоже отсортированные по убыванию цены.
Стакан с глубиной s содержит s лучших аггрегированных заявок по каждому направлению. Заявка на покупку тем лучше, чем у неё цена больше, заявка на продажу тем лучше, чем у неё цена меньше. Если аггрегированных заявок в данном направлении меньше s, то они все попадают в итоговый стакан.
Дано n биржевых заявок на покупку и продажу акций, требуется распечатать биржевой стакан глубины s для этих заявок.
Примечание
Будем обозначать (x, y) заявку по цене x с объемом y. В тестовом примере имеются три аггрегированные заявки на покупку: (10, 3), (20, 4), (25, 10) и две на продажу: (50, 8), (40, 1)
Нужно вывести не более двух лучших заявок по каждому направлению, поэтому заявку (10 3), имеющую худшую цену среди заявок на покупку, выводить не нужно.