AT_abc306_e [ABC306E] Best Performances

Description

[problemUrl]: https://atcoder.jp/contests/abc306/tasks/abc306_e 長さ $ N $ の数列 $ A=(A_1,A_2,\dots,A_N) $ があり、最初全ての項が $ 0 $ です。 入力で与えられる整数 $ K $ を用いて関数 $ f(A) $ を以下のように定義します。 - $ A $ を降順に (広義単調減少となるように) ソートしたものを $ B $ とする。 - このとき、 $ f(A)=B_1\ +\ B_2\ +\ \dots\ +\ B_K $ とする。 この数列に合計 $ Q $ 回の更新を行うことを考えます。 数列 $ A $ に対し以下の更新を $ i=1,2,\dots,Q $ の順に行い、各更新ごとにその時点での $ f(A) $ の値を出力してください。 - $ A_{X_i} $ を $ Y_i $ に変更する。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ K $ $ Q $ $ X_1 $ $ Y_1 $ $ X_2 $ $ Y_2 $ $ \vdots $ $ X_Q $ $ Y_Q $

Output Format

全体で $ Q $ 行出力せよ。そのうち $ i $ 行目には $ i $ 回目の更新を終えた時点での $ f(A) $ の値を整数として出力せよ。

Explanation/Hint

### 制約 - 入力は全て整数 - $ 1\ \le\ K\ \le\ N\ \le\ 5\ \times\ 10^5 $ - $ 1\ \le\ Q\ \le\ 5\ \times\ 10^5 $ - $ 1\ \le\ X_i\ \le\ N $ - $ 0\ \le\ Y_i\ \le\ 10^9 $ ### Sample Explanation 1 この入力では $ N=4,K=2 $ です。 $ Q=10 $ 回の更新を行います。 - $ 1 $ 回目の更新を受けて $ A=(5,0,0,0) $ となります。このとき $ f(A)=5 $ です。 - $ 2 $ 回目の更新を受けて $ A=(5,1,0,0) $ となります。このとき $ f(A)=6 $ です。 - $ 3 $ 回目の更新を受けて $ A=(5,1,3,0) $ となります。このとき $ f(A)=8 $ です。 - $ 4 $ 回目の更新を受けて $ A=(5,1,3,2) $ となります。このとき $ f(A)=8 $ です。 - $ 5 $ 回目の更新を受けて $ A=(5,10,3,2) $ となります。このとき $ f(A)=15 $ です。 - $ 6 $ 回目の更新を受けて $ A=(0,10,3,2) $ となります。このとき $ f(A)=13 $ です。 - $ 7 $ 回目の更新を受けて $ A=(0,10,3,0) $ となります。このとき $ f(A)=13 $ です。 - $ 8 $ 回目の更新を受けて $ A=(0,10,1,0) $ となります。このとき $ f(A)=11 $ です。 - $ 9 $ 回目の更新を受けて $ A=(0,0,1,0) $ となります。このとき $ f(A)=1 $ です。 - $ 10 $ 回目の更新を受けて $ A=(0,0,0,0) $ となります。このとき $ f(A)=0 $ です。