#aBC261Did371. [ABC261D] Flipping and Bonus

[ABC261D] Flipping and Bonus

AT_abc261_d [ABC261D] Flipping and Bonus

题目描述

高桥君要进行 NN 次抛硬币。他还持有一个计数器,初始时计数器的数值为 00

在第 ii 次抛硬币时,根据正反面的结果,会发生以下情况:

  • 如果是正面:高桥君将计数器的数值加 11,并获得 XiX_i 日元。
  • 如果是反面:高桥君将计数器的数值重置为 00,且无法获得金钱。

此外,有 MM 种连续奖励,第 ii 种连续奖励为:每当计数器的数值变为 CiC_i 时,可以获得 YiY_i 日元。

请你求出高桥君最多可以获得多少日元。

输入格式

输入以如下格式从标准输入给出。

NN MM X1X_1 X2X_2 \ldots XNX_N C1C_1 Y1Y_1 C2C_2 Y2Y_2 \vdots CMC_M YMY_M

输出格式

请输出高桥君能够获得的最大金额(整数)。

输入输出样例 #1

输入 #1

6 3
2 7 1 8 2 8
2 10
3 1
5 5

输出 #1

48

输入输出样例 #2

输入 #2

3 2
1000000000 1000000000 1000000000
1 1000000000
3 1000000000

输出 #2

5000000000

说明/提示

限制条件

  • 1MN50001\leq M\leq N\leq 5000
  • 1Xi1091\leq X_i\leq 10^9
  • 1CiN1\leq C_i\leq N
  • 1Yi1091\leq Y_i\leq 10^9
  • C1,C2,,CMC_1,C_2,\ldots,C_M 均互不相同。
  • 输入均为整数。

样例解释 1

依次出现正面、正面、反面、正面、正面、正面时,获得的金额如下:

  • 11 次抛硬币为正面。计数器从 00 变为 11,获得 22 日元。
  • 22 次抛硬币为正面。计数器从 11 变为 22,获得 77 日元,并作为连续奖励获得 1010 日元。
  • 33 次抛硬币为反面。计数器从 22 变为 00
  • 44 次抛硬币为正面。计数器从 00 变为 11,获得 88 日元。
  • 55 次抛硬币为正面。计数器从 11 变为 22,获得 22 日元,并作为连续奖励获得 1010 日元。
  • 66 次抛硬币为正面。计数器从 22 变为 33,获得 88 日元,并作为连续奖励获得 11 日元。

此时高桥君共获得 2+(7+10)+0+8+(2+10)+(8+1)=482+(7+10)+0+8+(2+10)+(8+1)=48 日元,为最大值。

请注意,连续奖励每当计数器数值变为 CiC_i 时都可以获得多次。

顺便一提,若 66 次抛硬币全部为正面,则只能获得 2+(7+10)+(1+1)+8+(2+5)+8=442+(7+10)+(1+1)+8+(2+5)+8=44 日元,不是最大值。

样例解释 2

请注意,答案可能超出 3232 位整数范围。

由 ChatGPT 4.1 翻译