http://tyvj.cn/p/1019
贪心题目,a,b快排后从a的头开始加b的尾即为最大配对数
参考代码:
#include<cstdio>
#include<cstring>
int abs(int x) {
if (x>=0) return x; else return 0-x;
}
int n;
int a[10200], b[10200];
void qs(int* s, int l, int r) {
int i=l, j=r, x=s[(l+r)/2];
do {
while (s[i]<x) i++;
while (s[j]>x) j--;
if (i<=j) {
int y = s[i];
s[i] = s[j];
s[j] = y;
i++,j--;
}
} while (i<=j);
if (i<r) qs(s,i,r);
if (l<j) qs(s,l,j);
}
void init() {
scanf("%d", &n);
for (int i=1;i<=n;i++) {
scanf("%d", &a[i]);
}
for (int i=1;i<=n;i++) {
scanf("%d", &b[i]);
}
}
void go() {
qs(a,1,n), qs(b,1,n);
int tot=0;
for (int i=1;i<=n;i++) {
tot += abs(a[i]-b[n-i+1]);
}
printf("%d", tot);
}
int main() {
init();
go();
return 0;
}