3109 - 接竹竿
时间限制 : 1 秒
内存限制 : 128 MB
一天,神犇和 LCR 在玩扑克牌。他们玩的是一种叫做“接竹竿”的游戏。
游戏规则是:一共有 n 张牌,每张牌上有一个花色 c 和一个点数 v,花色不超过 k 种。将这些牌依次放入一个队列,队列初始为空。若放入之前队列中已有与新放入牌花色相同的牌,你可以选择将新放入牌和队列中任意一张花色相同的牌之间的所有牌全部取出队列(包括这两张牌本身),并得到与取出的所有牌点数和的分数。
现在已知 LCR 把这 n 张牌放入队列的顺序,求她最多能得多少分。
输入顺序即为 LCR 放入队列的顺序。即,c_i 表示第 i 张放入的牌的花色,v_i 表示第 i 张放入的牌的点数。
请注意,如果你知道类似的纸牌游戏,请尤其仔细地阅读规则,以免因为理解题意错误而出现不必要的问题。
输入
第一行两个整数 n,k。
第二行,n 个整数 c_1,c_2,...,c_n 表示花色,满足 1\leq c_i\leq k。
第三行,n 个整数 v_1,v_2,...,v_n 表示点数。
输出
输出一行一个整数,表示最多能得到的分数。
样例
输入
7 3 1 2 1 2 3 2 3 1 2 1 2 3 2 3
输出
13
输入
18 5 5 2 3 5 1 3 5 2 1 4 2 4 5 4 1 1 1 5 8 2 7 6 10 8 10 9 10 2 4 7 7 7 7 9 7 3
输出
123
提示
对于 100\% 的数据,1\leq n\leq 10^6,1\leq k\leq 10^6,1\leq v_i\leq 10^9。
来源
LibreOJ