AT_abc261_d [ABC261D] Flipping and Bonus

Description

[problemUrl]: https://atcoder.jp/contests/abc261/tasks/abc261_d 高橋君が $ N $ 回コイントスを行います。 また、高橋君はカウンタを持っており、最初カウンタの数値は $ 0 $ です。 $ i $ 回目のコイントスで表裏のどちらが出たかによって、次のことが起こります。 - 表が出たとき:高橋君はカウンタの数値を $ 1 $ 増やし、$ X_i $ 円もらう。 - 裏が出たとき:高橋君はカウンタの数値を $ 0 $ に戻す。お金をもらうことは出来ない。 また、$ M $ 種類の連続ボーナスがあり、$ i $ 種類目の連続ボーナスではカウンタの数値が $ C_i $ になる**たびに** $ Y_i $ 円もらうことができます。 高橋君は最大で何円もらうことができるかを求めてください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ M $ $ X_1 $ $ X_2 $ $ \ldots $ $ X_N $ $ C_1 $ $ Y_1 $ $ C_2 $ $ Y_2 $ $ \vdots $ $ C_M $ $ Y_M $

Output Format

高橋君がもらうことのできる金額の最大値を整数で出力せよ。

Explanation/Hint

### 制約 - $ 1\leq\ M\leq\ N\leq\ 5000 $ - $ 1\leq\ X_i\leq\ 10^9 $ - $ 1\leq\ C_i\leq\ N $ - $ 1\leq\ Y_i\leq\ 10^9 $ - $ C_1,C_2,\ldots,C_M $ はすべて異なる。 - 入力はすべて整数 ### Sample Explanation 1 順に 表, 表, 裏, 表, 表, 表 が出た時、もらえる金額は次のようになります。 - $ 1 $ 回目のコイントスで表が出る。カウンタの数値を $ 0 $ から $ 1 $ にして、$ 2 $ 円もらう。 - $ 2 $ 回目のコイントスで表が出る。カウンタの数値を $ 1 $ から $ 2 $ にして、$ 7 $ 円もらう。さらに、連続ボーナスとして $ 10 $ 円もらう。 - $ 3 $ 回目のコイントスで裏が出る。カウンタの数値を $ 2 $ から $ 0 $ にする。 - $ 4 $ 回目のコイントスで表が出る。カウンタの数値を $ 0 $ から $ 1 $ にして、$ 8 $ 円もらう。 - $ 5 $ 回目のコイントスで表が出る。カウンタの数値を $ 1 $ から $ 2 $ にして、$ 2 $ 円もらう。さらに、連続ボーナスとして $ 10 $ 円もらう。 - $ 6 $ 回目のコイントスで表が出る。カウンタの数値を $ 2 $ から $ 3 $ にして、$ 8 $ 円もらう。さらに、連続ボーナスとして $ 1 $ 円もらう。 このとき高橋君は合計で $ 2+(7+10)+0+8+(2+10)+(8+1)=48 $ 円もらうことができ、このときが最大です。 連続ボーナスはカウンタの数値が $ C_i $ になるたびに何度でももらえることに注意してください。 ちなみに、$ 6 $ 回のコイントスで全部表が出た時は $ 2+(7+10)+(1+1)+8+(2+5)+8=44 $ 円しかもらうことが出来ず、この時は最大ではありません。 ### Sample Explanation 2 答えが $ 32 $ bit 整数型に収まらないこともあることに注意してください。