题意
将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 () {
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;
}