题目大意:将2N个任务分成N组,保证每组当中包含一个A任务,一个B任务,每个任务需要花费的钱是a+b-t。问最小花费是多少。
排一下序就好了。
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#define MAX 1000+10
using namespace std;
int n, t;
int A[MAX], B[MAX];
int main(void) {
while (~scanf("%d%d", &n, &t)) {
for (int i = 1; i <= n; i++) {
scanf("%d", &A[i]);
}
for (int i = 1; i <= n; i++) {
scanf("%d", &B[i]);
}
int ans = 0;
sort(A + 1, A + 1 + n);
reverse(A + 1, A + 1 + n);
sort(B + 1, B + 1 + n);
for (int i = 1; i <= n; i++) {
if (A[i] + B[i] > t) {
ans += A[i] + B[i] - t;
}
}
printf("%d\n", ans);
}
return 0;
}