题目大意:
给你N(N<=3000)个数(这些数不超过5000),要求输出他们两两相加后和最大的M(M<=1000)个数。(并且这M个数从大到小排序)
思路:
数的范围有限所以进行基数排序。
输出的时候从大到小扫描凑足M个即可。
#includeconst int MAXN=10000+2; int data[3001]; int main() { int n,m; while(~scanf(%d%d,&n,&m)) { int sum[MAXN]={0}; for(int i=0;i
题目大意:
给你N(N<=3000)个数(这些数不超过5000),要求输出他们两两相加后和最大的M(M<=1000)个数。(并且这M个数从大到小排序)
思路:
数的范围有限所以进行基数排序。
输出的时候从大到小扫描凑足M个即可。
#includeconst int MAXN=10000+2; int data[3001]; int main() { int n,m; while(~scanf(%d%d,&n,&m)) { int sum[MAXN]={0}; for(int i=0;i