/* hdu 1280 0ms,很奇怪为什么加了个判断m=0的 反而会变成15ms */ #include <cstdio> #include <algorithm> #include <cstring> #define maxn 10005 using namespace std; int hash[maxn]; int num[maxn/3]; int n,m; int main() { while(scanf("%d%d",&n,&m)!=EOF) { memset(hash,0,sizeof(hash)); for(int i=0; i<n; i++) scanf("%d",&num[i]); //if(m==0) continue; 在这里 int max=-1; for(int i=0; i<n; i++) for(int j=i+1; j<n; j++) { int s=num[i]+num[j]; hash[s]++; if(s>max) max=s; } int j=0; for(int i=max; i>=0 && j<m; i--) { if(hash[i]-- && j<m) { printf("%d",i); j++; max=i; break; } } for(int i=max; i>=0 && j<m; i--) { while(hash[i]-- && j<m) { printf(" %d",i); j++; } } printf("\n"); } }