题意
将2N个任务分成N组,保证每组当中包含一个A任务,一个B任务,每个任务需要花费的钱是a+b-t。问最小花费是多少
思路
令一种任务最大的加上另一种任务最小的来组成一个小组
代码
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <string>
#include <vector>
using namespace std;
typedef long long ll;
const int maxn = 1000 + 10;
int n, t;
int a[ maxn ], b[ maxn ];
int main () {
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
while ( ~scanf ( "%d%d", &n, &t ) ) {
for ( int i = 0; i < n; ++i )
scanf ( "%d", &a[ i ] );
for ( int i = 0; i < n; ++i )
scanf ( "%d", &b[ i ] );
sort ( a, a + n );
reverse ( a, a + n );
sort ( b, b + n );
int sum = 0;
for ( int i = 0; i < n; ++i )
sum += a[ i ] + b[ i ] > t ? a[ i ] + b[ i ] - t : 0;
printf ( "%d\n", sum );
}
return 0;
}