orders: тройка [price, amount, side] означает amount одинаковых заявок по цене price; side = 0 — покупка, side = 1 — продажа. Заявки внутри пачки и сами пачки обрабатываются строго по порядку, по одной.
Когда приходит заявка на покупку, биржа смотрит на самую дешёвую продажу в книге. Если её цена не выше цены покупки, обе заявки исполняются, и продажа уходит из книги. Иначе покупка ложится в книгу.
Заявка на продажу обрабатывается зеркально: берётся самая дорогая покупка в книге; если её цена не ниже цены продажи, обе исполняются, иначе продажа ложится в книгу.
Верните, сколько заявок осталось в книге после обработки всех пачек. Число может быть большим, поэтому верните его по модулю 10⁹ + 7.orders=[[20, 3, 1], [18, 2, 0], [25, 4, 0]] → 3
3 заявки на продажу по 20 ждут в книге. 2 заявки на покупку по 18 не дотягивают до 20 и тоже ждут. Из 4 покупок по 25 три забирают продажи по 20, а одна остаётся. В книге: 2 покупки по 18 и 1 покупка по 25 — всего 3.
orders=[[10, 5, 0], [8, 5, 1]] → 0
Продажа по 8 не дороже покупки по 10, поэтому все 5 продаж сводятся с 5 покупками. Книга пуста.
orders=[[5, 1000000000, 1], [5, 1000000000, 1]] → 999999993
Покупок нет, все 2·10⁹ продаж остаются, ответ 2·10⁹ по модулю 10⁹ + 7.
orders=[[20, 3, 1], [18, 2, 0], [25, 4, 0]]
3
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 116 тестов на сервере, включая скрытые.