计算机学院大学生程序设计竞赛(2015’12) 1003 The collector’s puzzle
#include<cstdio> #include<algorithm> using namespace std; using namespace std; const int maxn=100000+10; int a[maxn],b[maxn]; int main() { int n,m; while(scanf("%d %d",&n,&m)!=EOF) { for(int i=1; i<=n; i++) scanf("%d",&a[i]); for(int i=1; i<=m; i++) scanf("%d",&b[i]); sort(a+1,a+n+1); sort(b+1,b+m+1); b[0]=-9999999; int now=m,ans=0; for(int i=n; i>=1; i--) { while(abs(a[i]-b[now])>=abs(a[i]-b[now-1])) now--; ans=ans+abs(a[i]-b[now]); } printf("%d\n",ans); } return 0; }