acm.hdu.edu.cn/showproblem.php?pid=1280
话说真得不知道这是个什么题啊 水水的AC了 看了看其他人的解体报告都说是哈希。我感觉就是空间换时间。
AC代码:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int a[3005],num[10005];
bool hash[10005];
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=-1)
{
memset(hash,false,sizeof(hash));
memset(num,0,sizeof(num));
memset(a,0,sizeof(a));
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=1;i<n;i++)
for(int j=0;j<i;j++){
num[a[i]+a[j]]++;
hash[a[i]+a[j]]=true;
}
int k=0;
for(int i=10000;k!=m;i--){
if(!hash[i]) continue;
while(num[i]&& k!=m){
k++;
num[i]--;
if(k==1) printf("%d",i);
else printf(" %d",i);
}
}
printf("\n");
}
return 0;
}