开数组直接哈希即可。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int maxn=10000+5;
const int N=3000+5;
int hash[maxn];
int a[N];
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
memset(hash,0,sizeof(hash));
for(int i=0; i<n; i++)
{
scanf("%d",&a[i]);
for(int j=0; j<i; j++)
hash[a[i]+a[j]]++;
}
for(int i=10000; i>=0&&m; i--)
{
while(hash[i]&&m)
{
if(m!=1) printf("%d ",i);
else printf("%d\n",i);
hash[i]--;
m--;
}
}
}
return 0;
}