[ARC126E] Infinite Operations

题意翻译

给定一个长度为 $n$ 的正整数序列 $a$ 和 $q$ 个操作,第 $i$ 个操作为如下: - 给定 $x,y$,将 $a_x\to y$ 每一次操作后输出这个序列的最大价值,价值定义如下:每一次选择 $i,j$ 满足 $a_i\le a_j$,找到一个非负实数 $x$ 满足 $a_i+2x\le a_j$,将 $a_i\to a_i+x,a_j\to a_j-x$,得到 $x$ 的价值,价值可以累加。你可以重复这个操作多次。可以证明最大的总价值收敛到一个有理数,输出这个有理数对 $998244353$ 取模的值。 - $2\le n,q\le 3\times 10^5,a_i\le 10^9$

题目描述

[problemUrl]: https://atcoder.jp/contests/arc126/tasks/arc126_e $ N $ 項からなる正整数列 $ A\ =\ (A_1,\ A_2,\ \ldots,\ A_N) $ と $ Q $ 個のクエリが与えられます。$ i $ 番目のクエリは、以下のようなものです: - 整数 $ x_i,\ y_i $ (ただし $ 1\leq\ x_i\leq\ N $)が与えられる。$ A_{x_i} $ を $ y_i $ に変更する。 クエリで数列が変更されるたびに、以下の問題の答えを $ \mod\ 998244353 $ で求めてください(注記参照)。 > 数列 $ A $ に対して以下の操作を $ n $ 回行うとき、獲得できる総得点の最大値を $ f(n) $ とする。 > > - $ A_i\leq\ A_j $ となる $ i,\ j $ および $ A_i\ +\ 2x\ \leq\ A_j $ となる**非負実数** $ x $ を選ぶ。 > - $ A_i $ に $ x $ を加え、$ A_j $ から $ x $ を引く。 > - $ x $ 点を獲得する。 > > 極限 $ \displaystyle\ \lim_{n\to\infty}\ f(n) $ が存在することが証明できる。この値を求めよ。

输入输出格式

输入格式


入力は以下の形式で標準入力から与えられます。 > $ N $ $ Q $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $ $ x_1 $ $ y_1 $ $ \vdots $ $ x_Q $ $ y_Q $

输出格式


$ Q $ 行出力してください。$ i $ 行目には、$ i $ 番目のクエリで数列を変更した時点での、問題の答えを出力してください。

输入输出样例

输入样例 #1

3 4
7 5 5
1 5
2 6
1 7
3 5

输出样例 #1

0
1
2
2

输入样例 #2

2 4
1 2
2 5
1 3
1 2
2 3

输出样例 #2

2
1
499122178
499122177

说明

### 注記 求める極限は必ず有理数となることが証明できます。またこの問題の制約下では、その値を互いに素な $ 2 $ つの整数 $ P,\ Q $ を用いて $ \frac{P}{Q} $ と表したとき、$ R\times\ Q\equiv\ P\pmod{998244353} $ かつ $ 0\leq\ R\ <\ 998244353 $ を満たす整数 $ R $ がただ一つ存在することが証明できます。この $ R $ を求めてください。 ### 制約 - $ 2\leq\ N\leq\ 3\times\ 10^5 $ - $ 1\leq\ Q\leq\ 3\times\ 10^5 $ - $ 1\leq\ A_i\ \leq\ 10^9 $ - $ 1\leq\ x_i\leq\ N $ - $ 1\leq\ y_i\leq\ 10^9 $ ### Sample Explanation 1 $ 1 $ つめのクエリにより、数列は $ (5,\ 5,\ 5) $ へと変更されます。この場合任意の $ n $ に対して $ f(n)\ =\ 0 $ となり、答えは $ 0 $ となります。 $ 2 $ つめのクエリにより、数列は $ (5,6,5) $ へと変更されます。操作は例えば以下のように進行します。 - $ (i,j,x)\ =\ (3,2,0.4) $ と選ぶ。数列を $ (5,\ 5.6,\ 5.4) $ へ変更し、$ 0.4 $ 点を獲得する。 - $ (i,j,x)\ =\ (1,2,0.3) $ と選ぶ。数列を $ (5.3,\ 5.3,\ 5.4) $ へ変更し、$ 0.3 $ 点を獲得する。 上の方法では $ 2 $ 回の操作により $ 0.7 $ 点を獲得しており、$ f(2)\ \geq\ 0.7 $ であることがわかります。 この場合、獲得できる総得点は $ 1 $ を超えることはなく、操作回数を増やしていき最適な方法で操作を行うことで、獲得できる総得点を限りなく $ 1 $ に近づけることが可能であることが証明できます。したがって $ \displaystyle\ \lim_{n\to\infty}\ f(n)\ =\ 1 $ となります。