注解
1、簡單的哈希映射,把sum映射到對應位置。
代碼
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 10001;
int main() {
int N, M;
while(~scanf("%d %d", &N, &M)) {
int a[N];
int sum[MAXN];
memset(sum, 0, sizeof(sum));
for(int i=0; i<N; i++) {
scanf("%d", &a[i]);
}
for(int i=0; i<N-1; i++) {
for(int j=i+1; j<N; j++) {
sum[a[i]+a[j]]++;
}
}
for(int i=MAXN-1; i>=0; i--) {
if(M>1 && sum[i]>0) {
printf("%d ", i);
sum[i]--;
i++;
M--;
} else if(sum[i]>0) {
printf("%d", i);
break;
}
}
printf("\n");
}
return 0;
}