#D0954. 卡片回收

卡片回收

题目描述

小 B 把 nn 张卡片从左到右摆成一排,位置依次编号为 11 到 nn。第 ii 张卡片的类别为 aia_i,积分为 wiw_i。

对于第 ii 张卡片,如果它的右侧存在同类别的卡片,设其中离它最近的一张位于 jj。当 j−i≤kj-i\le k 时,小 B 可以回收第 ii 张卡片,获得 wiw_i 积分。右侧没有同类别卡片,或距离超过 kk 时,不能回收。

请计算回收所有符合条件的卡片后,能获得的积分总和。

所有判定都依据最初的排列。回收不会改变卡片的位置编号或距离。右侧那张卡片是否能被回收,不影响当前卡片的判定。

输入格式

第一行两个整数 n,kn,k。

接下来 nn 行,第 ii 行包含两个整数 ai,wia_i,w_i,表示第 ii 张卡片的类别和积分。

输出格式

输出一个整数,表示能获得的积分总和。

样例

4 2
1 5
2 7
1 11
1 13
16
1 1
9 100
0
5 1
2 3
2 5
2 7
1 11
2 13
8

样例解释

样例 1:第 11 张右侧最近的同类卡片在位置 33,距离为 22,可得 55 分。第 33 张右侧最近的同类卡片在位置 44,距离为 11,可得 1111 分。其余两张右侧没有同类卡片,总分为 1616。

样例 2:唯一一张卡片的右侧没有卡片,不能回收。

样例 3:第 1,21,2 张可以回收,得分为 3+5=83+5=8。第 33 张与右侧最近同类卡片的距离为 22,大于 kk;第 4,54,5 张右侧没有同类卡片。

数据范围与约定

对于 100%100\% 的数据,1≤n,k,ai≤1051\le n,k,a_i\le 10^5,1≤wi≤10001\le w_i\le 1000。

子任务 分值 限制
1 30 n≤200n\le 200
2 70 无额外限制