HDU 5281 BestCoder Round #47 1002

来源:互联网 发布:淘宝商家点评 编辑:程序博客网 时间:2024/05/18 03:11

Use greedy algorithm can solve this problem;

The portal:http://acm.hdu.edu.cn/showproblem.php?pid=5281

#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <iostream>using namespace std;long long a[100005];long long b[100005];int cmp1(const void * a1,const void * a2){long long p1 = *(long long *)a1;long long p2 = *(long long *)a2;return p2 - p1;}int cmp2(const void * a1,const void * a2){long long p1 = *(long long *)a1;long long p2 = *(long long *)a2;return p1 - p2;}void Deal_with(){int T,n,m;scanf("%d",&T);while(T--){scanf("%d %d",&n,&m);for(int i=0;i<n;i++){scanf("%lld",a+i);}for(int i=0;i<m;i++){scanf("%lld",b+i);}qsort(a,n,sizeof(long long),cmp1);//Sort a array from higher to lower;qsort(b,m,sizeof(long long),cmp2);//Sort b array form lower to higher;int k = 0;long long ans = 0;for(int i=0;i<n;i++){if(k > m - 1)break;//I don't add this line that I can't pass the final test in BestCoder;if(a[i] < b[k])break;else {ans += a[i] - b[k++];}}printf("%I64d\n",ans);}}int main(void) {//freopen("a.in","r",stdin);Deal_with();return 0;}


0 0
原创粉丝点击