看来我得摆脱思维定势,最开始竟然是用堆做的,并且做错了==!
/*
* hdu-1280
* mike-w
* 2012-4-14
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_N 3333
#define MAX_VALUE 11111
int f[MAX_N],g[MAX_VALUE];
int N,M;
int main(void)
{
#ifndef ONLINE_JUDGE
freopen("in","r",stdin);
#endif
int i,j;
while(scanf("%d%d",&N,&M)!=EOF)
{
memset(g,0,sizeof(g));
for(i=0;i<N;i++)
scanf("%d",f+i);
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
g[f[i]+f[j]]++;
for(i=10000;i>0;i--)
while(g[i]>0 && M>0)
printf("%d%c",i,M==1?'\n':' '),M--,g[i]--;
}
return 0;
}