hdu1280

来源:互联网 发布:淘宝发表论文是真的吗? 编辑:程序博客网 时间:2024/05/21 07:02
/*
分析:
    简单hash。
考虑m==0的情况,可以把15MS变成0MS。
n=0的情况可以不用理。


  摘:
    给定的N个整数序列, 两两求和,从大到小输出M个和
数。因为所有整数不超过5000,则相加不会超过10000,可
以用哈希解决。


                                         2012-04-25

*/



#include"stdio.h"#include"string.h"int main(){int hash[10011];int i,l;int n,m;int num[3033];while(scanf("%d%d",&n,&m)!=-1){memset(hash,0,sizeof(hash));if(n==0)continue;scanf("%d",&num[0]);for(i=1;i<n;i++){scanf("%d",&num[i]);for(l=0;l<i;l++)hash[num[i]+num[l]]++;}if(m==0)continue;for(i=10000;i>0;i--){if(m==1)break;while(hash[i]!=0){printf("%d ",i);hash[i]--;m--;if(m==1)break;}}i+=1;for(;i>0;i--){if(hash[i]!=0){printf("%d\n",i);break;}}}return 0;}


原创粉丝点击