Codeforces Round 978 (Div. 2) |
---|
Закончено |
Это сложная версия задачи. В этой версии гарантируется, что $$$q \leq 10^5$$$. Вы можете совершать взломы только в том случае, если решены обе версии задачи.
Целочисленная сетка $$$A$$$ с $$$p$$$ строками и $$$q$$$ столбцами называется красивой, если:
Имеется частично заполненная целочисленная сетка $$$G$$$ с $$$n$$$ строками и $$$m$$$ столбцами, в которой заполнены только $$$k$$$ ячеек. Поликарп хочет узнать, сколькими способами он может распределить целые числа по незаполненным ячейкам, чтобы сетка стала красивой.
Однако Монокарп считает, что эта задача слишком проста. Поэтому он выполнит $$$q$$$ обновлений сетки. В каждом обновлении он будет выбирать незаполненную ячейку и присваивать ей целое число. Заметим, что эти обновления перманентны. То есть изменения, внесенные в сетку, будут применяться при обработке будущих обновлений.
Для каждого из $$$q + 1$$$ состояния сетки (начального состояния и после каждого из $$$q$$$ запросов) определите количество способов, которыми Поликарп может присвоить целые числа незаполненным ячейкам, чтобы сетка стала красивой. Поскольку это число может быть очень большим, от вас требуется только вывести их значения по модулю $$$10^9+7$$$.
Каждый тест состоит из нескольких наборов входных данных. Первая строка содержит одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Первая строка каждого набора входных данных содержит четыре целых числа $$$n$$$, $$$m$$$, $$$k$$$ и $$$q$$$ ($$$2 \le n, m \le 10^5$$$; $$$0 \le k, q \leq 10^5$$$) — количество строк, количество столбцов, количество фиксированных ячеек и количество обновлений.
Следующие $$$k$$$ строк содержат по три целых числа $$$r$$$, $$$c$$$ и $$$v$$$ ($$$1 \le r \le n, 1 \le c \le m$$$; $$$0 \le v < 2^{30}$$$) — изначально элементу $$$G_{r, c}$$$ присвоено целое число $$$v$$$.
Следующие $$$q$$$ строк содержат по три целых числа $$$r$$$, $$$c$$$ и $$$v$$$ ($$$1 \le r \le n, 1 \le c \le m$$$; $$$0 \le v < 2^{30}$$$) — данное обновление присваивает элементу $$$G_{r, c}$$$ целое число $$$v$$$.
Гарантируется, что пары $$$(r,c)$$$ во всех присваиваниях различны.
Гарантируется, что суммы $$$n$$$, $$$m$$$, $$$k$$$ и $$$q$$$ по всем наборам входных данных не превосходят $$$10^5$$$ соответственно.
Для каждого набора входных данных выведите $$$q + 1$$$ строку. В $$$i$$$-й строке вывода должен содержаться ответ для $$$i$$$-го состояния решетки по модулю $$$10^9 + 7$$$.
33 3 8 12 1 63 2 121 2 62 2 01 3 101 1 02 3 123 1 103 3 12 5 2 01 1 101 2 302 5 0 21 1 101 2 30
1 0 489373567 651321892 769740174 489373567
В первом наборе входных данных мы изначально имеем следующую сетку:
$$$0$$$ | $$$6$$$ | $$$10$$$ |
$$$6$$$ | $$$0$$$ | $$$12$$$ |
$$$10$$$ | $$$12$$$ | $$$?$$$ |
Можно доказать, что единственным допустимым значением для ячейки $$$(3, 3)$$$ является $$$0$$$, поэтому первый ответ — $$$1$$$. Для второго запроса ячейка не удовлетворяет условию, поэтому ответ — $$$0$$$.
Название |
---|