As a tester, when my solution has a different output from the example during testing, I suspect the author first.
Хотя Ирис иногда ставит задачу, решение которой неверно, она по-прежнему настаивает на создании задач с помощью своего воображения; в конце концов, все мы упрямы... И, как всегда, Ирис поставила перед собой задачу, которую она решила неправильно, и Крис должен её спасать! Но в этот раз вы будете играть роль Криса:
- Крису даны два массива \(a\) и \(b\), оба состоящие из \(n\) целых чисел.
- Ирис интересуется наибольшим возможным значением \(P = \prod\limits_{i=1}^n \min(a_i, b_i)\) после произвольной перестановки \(b\). Обратите внимание, что она хочет только узнать максимальное значение \(P\), элементы самого массива \(b\) не переставляются.
- Будет внесено \(q\) изменений. Каждое изменение может быть обозначено двумя целыми числами \(o\) и \(x\) (значение \(o\) может быть \(1\) или \(2\), \(1 \leq x \leq n\)). Если \(o = 1\), то Ирис увеличивает \(a_x\) на \(1\); в противном случае она увеличивает \(b_x\) на \(1\).
- Ирис спрашивает у Криса максимальное значение \(P\) суммарно \(q + 1\) раз: один раз перед изменениями, затем после каждого изменения.
- Поскольку \(P\) может быть очень большим, Крису нужно только вычислить его по модулю \(998\,244\,353\).
Крис вскоре справился с этой задачей, но он так устал, что заснул. Помимо благодарности Крису, теперь ваша очередь написать программу для вычисления ответов по заданным входным данным.
Обратите внимание: поскольку входные и выходные данные большие, вам, возможно, потребуется оптимизировать их для решения данной задачи.
Например, в C++ достаточно использовать следующие строки в начале функции main():
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr); std::cout.tie(nullptr);
}
Выходные данные
Для каждого набора входных данных выведите на одной строке \(q + 1\) целых числа — ответы Криса по модулю \(998\,244\,353\).
Примечание
В первом наборе входных данных:
- Перед внесением изменений Крис может переставить \(b\) в таком порядке: \([1, 2, 3]\), и тогда \(P = \prod\limits_{i=1}^n \min(a_i, b_i) = 1 \cdot 1 \cdot 2 = 2\). Можно доказать, что это максимально возможное значение. Например, если Крис переставит \(b = [2, 3, 1]\), то \(P\) будет равно \(1 \cdot 1 \cdot 1 = 1 < 2\), что не является оптимальным.
- После первого изменения Крис может переставить \(b\) в таком порядке: \([1, 2, 3]\), и тогда \(P = 1 \cdot 1 \cdot 3 = 3\), что является максимально возможным значением.
- После второго изменения Крис может переставить \(b\) в таком порядке: \([2, 2, 3]\), и тогда \(P = 1 \cdot 1 \cdot 3 = 3\), что является максимально возможным значением.
- После третьего изменения Крис может переставить \(b\) в таком порядке: \([2, 2, 3]\), и тогда \(P = 6\), что является максимально возможным значением.
- После четвертого изменения Крис может переставить \(b\) в таком порядке:\([2, 2, 4]\), и тогда \(P = 6\), что является максимально возможным значением.
Примеры
| № | Входные данные | Выходные данные |
|
1
|
4 3 4 1 1 2 3 2 1 1 3 2 3 1 1 2 1 6 8 1 4 2 7 3 5 7 6 5 6 3 3 2 5 1 6 1 5 1 5 1 5 2 3 2 3 1 6 13 8 7 7 6 6 5 5 5 2 2 3 4 5 1 1 4 1 9 6 6 9 1 5 1 3 8 4 2 2 2 11 2 4 2 4 1 7 1 1 2 12 1 5 5 3 10000000 20000000 30000000 40000000 50000000 10000000 20000000 30000000 40000000 50000000 1 1 2 2 2 1
|
2 3 3 6 6
840 840 1008 1344 1680 2016 2016 2016 2352
2116800 2646000 3528000 3528000 3528000 4233600 4838400 4838400 4838400
205272023 205272023 205272023 264129429
|