#835. 拔河比赛的势均力敌

拔河比赛的势均力敌

题目背景

运动会上,班级要举办一场拔河比赛。班里共有 N 名同学报名。第 i 名同学的体重是 w_i,在班级里的人气热度为 v_i。

作为体育委员,你需要把这 N 名同学分为"左队"、"右队"和"啦啦队(不参与拔河)"三组。

为了保证比赛公平,左队和右队的总体重之差的绝对值不能超过 L

在此前提下,你希望参与拔河的两队同学的总人气热度之和最大(啦啦队的热度不计入其中)。

题目描述

给定 N 名同学的体重 w_i 和热度 v_i,以及允许的最大体重差 L。将同学分为左队、右队和啦啦队三组,使得左队和右队的体重差不超过 L,且两队的总热度最大。

输入格式

第一行包含两个整数 N 和 L,表示报名人数和允许的最大体重差。

接下来 N 行,每行两个整数 w_i 和 v_i,表示第 i 位同学的体重和人气热度。

输出格式

输出一个整数,表示满足体重差条件下的最大总人气热度。如果一个人都不选,热度为 0。

样例输入

4 2
10 50
11 60
8 40
9 45

样例输出

195

样例解释 将体重为 10 和 9 的同学分到左队(总重19)。 将体重为 11 和 8 的同学分到右队(总重19)。 两队体重差为 0 ≤ 2(极度公平)。 四个人都参与了拔河,总热度为 50 + 60 + 40 + 45 = 195。

数据范围

1 ≤ N ≤ 100,0 ≤ L ≤ 1000,1 ≤ w_i ≤ 20,1 ≤ v_i ≤ 1000。

(注:所有同学体重总和不超过 2000,可用 2000 作为数组下标偏移量)。