#P11359. [eJOI2023] Team Building

[eJOI2023] Team Building

题目描述

你需要集结一个 NN 人小队,第 ii 个人的能力值为 sis_i,你可以逐一将每个人加入你的小队。

在你的小队中,每个人拥有两个额外的属性:星语和可爱。加入一个人的过程分三步:

  • 这个人进入小队,其星语和可爱值均为 00
  • 剩余所有人的星语值加上自己的可爱值。
  • 剩余所有人的可爱值加上新加入的人的能力值。

最后,你的小队的总星语值定义为所有人的星语值之和,你需要最大化总星语值。

例如,如果你按顺序加入了能力值为 0,2,2,30,2,2,3 的人,所有人的属性变化如下:

行动 星语 可爱
加入第一个人 00
加入第二个人 0,00,0 0,00,0
更新星语值
更新可爱值 2,0\textbf{2},0
加入第三个人 0,0,00,0,0 2,0,02,0,0
更新星语值 2,0,0\textbf{2},\textbf{0},0
更新可爱值 2,0,02,0,0 4,2,0\textbf{4},\textbf{2},0
加入第四个人 2,0,0,02,0,0,0 4,2,0,04,2,0,0
更新星语值 6,2,0,0\textbf{6},\textbf{2},\textbf{0},0
更新可爱值 6,2,0,06,2,0,0 7,5,3,0\textbf{7},\textbf{5},\textbf{3},0

此时总星语值为 6+2+0+0=86+2+0+0=8,但是将顺序改为 2,2,3,02,2,3,0 就可以得到 7+3+0+0=107+3+0+0=10

你还需要处理 QQ 次修改,每次修改会将第 xix_i 个人的能力值改为 yiy_i,你需要求出每次修改后的最大总星语值,修改之间不独立,即每次修改在下一次保留。

输入格式

第一行输入两个整数 N,QN,Q

第二行输入 NN 个整数 sis_i

接下来 QQ 行,每行输入两个整数 xi,yix_i,y_i

输出格式

输出 Q+1Q+1 行,每行一个整数,代表初始序列和每次修改后的答案。

4 2
2 0 2 3
2 4
4 0
10
14
12

提示

【样例解释】

原始序列的最优方案在题面中已经给出。

第一次修改后的序列为 (2,4,2,3)(2,4,2,3)

第二次修改后的序列为 (2,4,2,0)(2,4,2,0)

【数据范围】

本题采用捆绑测试。

  • Subtask 1(11 pts):N7N\leq 7Q100Q\leq 100
  • Subtask 2(19 pts):N,Q500N,Q\leq 500
  • Subtask 3(15 pts):Q10Q\leq 10
  • Subtask 4(6 pts):si,yi1s_i,y_i\leq 1
  • Subtask 5(9 pts):si,yi500s_i,y_i\leq 500
  • Subtask 6(12 pts):xi=1x_i=1
  • Subtask 7(10 pts):每次修改和原来的数之差不超过 11
  • Subtask 8(18 pts):无特殊限制。

对于 100%100\% 的数据,保证 2N5×1042\leq N\leq 5\times 10^41Q1051\leq Q\leq 10^50si1050\leq s_i\leq 10^51xiN1\leq x_i\leq N0yi1050\leq y_i\leq 10^5