小杨发现了 个宝箱,其中第 个宝箱的价值是 。
小杨可以选择一些宝箱放入背包并带走,但是小杨的背包比较特殊,假设小杨选择的宝箱中最大价值为 ,最小价值为 ,小杨需要保证 −≤,否则小杨的背包会损坏。
小杨想知道背包不损坏的情况下,自己能够带走宝箱的总价值最大是多少。
第一行包含两个正整数 ,,含义如题面所示。
第二行包含 n 个正整数 1,2,…,,代表宝箱的价值。
输出一个整数,代表带走宝箱的最大总价值。
输入 #1
5 1 1 2 3 1 2
输出 #1
7
【样例解释】
在背包不损坏的情况下,小杨可以拿走两个价值为 2 的宝箱和一个价值为 3 的宝箱。
【数据范围】
对于全部数据,保证有 1≤≤1000,0≤≤1000,1≤≤1000。
对数组进行排序,然后双指针一前一后去遍历,每一次都定义一个变量g(随意命名),如果符合 − ≤ 则g += x,然后每一次都与res比较去更新res的值
代码:
#include
using namespace std;
const int N = 1e3 + 5;
int a[N];
int n,k,res = a[0];
int main()
{
cin >> n >> k;
for(int i=0;i> a[i];
}
sort(a+0,a+n);
// for(int i=0;i
加油