抛硬币奖励 - 代码源竞赛平台

题目描述

蜗蜗要连续抛 NN 次硬币,并记录一个初始为 00 的计数器。第 ii 次抛掷若为正面,计数器加 11,同时得到 XiX_i 元;若为反面,计数器立即归零,也得不到钱。

另外有 MM 种连续正面奖励。第 jj 种奖励规定:每当计数器变为 CjC_j,蜗蜗就额外得到 YjY_j 元。同一种奖励在计数器归零后仍可再次获得。

蜗蜗可以选择每次抛掷的结果。求他最多能得到多少钱。

输入格式

第一行包含两个整数 N,MN,M,分别表示抛掷次数和奖励种数。

第二行包含 NN 个整数 X1,X2,…,XNX_1,X_2,\ldots,X_N。

接下来 MM 行,每行包含两个整数 Cj,YjC_j,Y_j,表示一种连续正面奖励。

输出格式

输出一行一个整数,表示能够得到的最大金额。

样例

3 2
1 2 3
1 4
2 5
15
2 1
10 20
2 100
130

样例解释

样例 1 中,三次都选择正面,得到 1+2+31+2+3 元;计数器先后达到 11 和 22,再得到 4+54+5 元,总计 1515 元。

样例 2 中,两次都选择正面,得到 10+20+100=13010+20+100=130 元。

数据范围

对于 100% 的数据,保证 1≤M≤N≤50001\le M\le N\le 5000,1≤Xi,Yj≤1091\le X_i,Y_j\le 10^9,1≤Cj≤N1\le C_j\le N,且所有 CjC_j 互不相同。