atcoder#ARC126E. [ARC126E] Infinite Operations

[ARC126E] Infinite Operations

题目描述

N N 項からなる正整数列 A = (A1, A2, , AN) A\ =\ (A_1,\ A_2,\ \ldots,\ A_N) Q Q 個のクエリが与えられます。i i 番目のクエリは、以下のようなものです:

  • 整数 xi, yi x_i,\ y_i (ただし 1 xi N 1\leq\ x_i\leq\ N )が与えられる。Axi A_{x_i} yi y_i に変更する。

クエリで数列が変更されるたびに、以下の問題の答えを mod 998244353 \mod\ 998244353 で求めてください(注記参照)。

数列 A A に対して以下の操作を n n 回行うとき、獲得できる総得点の最大値を f(n) f(n) とする。

  • Ai Aj A_i\leq\ A_j となる i, j i,\ j および Ai + 2x  Aj A_i\ +\ 2x\ \leq\ A_j となる非負実数 x x を選ぶ。
  • Ai A_i x x を加え、Aj A_j から x x を引く。
  • x x 点を獲得する。

極限  limn f(n) \displaystyle\ \lim_{n\to\infty}\ f(n) が存在することが証明できる。この値を求めよ。

输入格式

入力は以下の形式で標準入力から与えられます。

N N Q Q A1 A_1 A2 A_2 \ldots AN A_N x1 x_1 y1 y_1 \vdots xQ x_Q yQ y_Q

输出格式

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

题目大意

给定一个长度为 nn 的正整数序列 aaqq 个操作,第 ii 个操作为如下:

  • 给定 x,yx,y,将 axya_x\to y

每一次操作后输出这个序列的最大价值,价值定义如下:每一次选择 i,ji,j 满足 aiaja_i\le a_j,找到一个非负实数 xx 满足 ai+2xaja_i+2x\le a_j,将 aiai+x,ajajxa_i\to a_i+x,a_j\to a_j-x,得到 xx 的价值,价值可以累加。你可以重复这个操作多次。可以证明最大的总价值收敛到一个有理数,输出这个有理数对 998244353998244353 取模的值。

  • 2n,q3×105,ai1092\le n,q\le 3\times 10^5,a_i\le 10^9
3 4
7 5 5
1 5
2 6
1 7
3 5
0
1
2
2
2 4
1 2
2 5
1 3
1 2
2 3
2
1
499122178
499122177

提示

注記

求める極限は必ず有理数となることが証明できます。またこの問題の制約下では、その値を互いに素な 2 2 つの整数 P, Q P,\ Q を用いて PQ \frac{P}{Q} と表したとき、R× Q P(mod998244353) R\times\ Q\equiv\ P\pmod{998244353} かつ 0 R < 998244353 0\leq\ R\ <\ 998244353 を満たす整数 R R がただ一つ存在することが証明できます。この R R を求めてください。

制約

  • 2 N 3× 105 2\leq\ N\leq\ 3\times\ 10^5
  • 1 Q 3× 105 1\leq\ Q\leq\ 3\times\ 10^5
  • 1 Ai  109 1\leq\ A_i\ \leq\ 10^9
  • 1 xi N 1\leq\ x_i\leq\ N
  • 1 yi 109 1\leq\ y_i\leq\ 10^9

Sample Explanation 1

1 1 つめのクエリにより、数列は (5, 5, 5) (5,\ 5,\ 5) へと変更されます。この場合任意の n n に対して f(n) = 0 f(n)\ =\ 0 となり、答えは 0 0 となります。 2 2 つめのクエリにより、数列は (5,6,5) (5,6,5) へと変更されます。操作は例えば以下のように進行します。 - (i,j,x) = (3,2,0.4) (i,j,x)\ =\ (3,2,0.4) と選ぶ。数列を (5, 5.6, 5.4) (5,\ 5.6,\ 5.4) へ変更し、0.4 0.4 点を獲得する。 - (i,j,x) = (1,2,0.3) (i,j,x)\ =\ (1,2,0.3) と選ぶ。数列を (5.3, 5.3, 5.4) (5.3,\ 5.3,\ 5.4) へ変更し、0.3 0.3 点を獲得する。 上の方法では 2 2 回の操作により 0.7 0.7 点を獲得しており、f(2)  0.7 f(2)\ \geq\ 0.7 であることがわかります。 この場合、獲得できる総得点は 1 1 を超えることはなく、操作回数を増やしていき最適な方法で操作を行うことで、獲得できる総得点を限りなく 1 1 に近づけることが可能であることが証明できます。したがって  limn f(n) = 1 \displaystyle\ \lim_{n\to\infty}\ f(n)\ =\ 1 となります。