#include<iostream>
#include<algorithm>
using namespace std;

int res[3013500];
int main()
{
    int n, m, k;
    int num[3005];
    while (scanf("%d%d",&n,&m)!=EOF){
        k = 0;
        for (int i = 0; i < n; i++){
            cin >> num[i];
        }
        for (int i = 0; i < n-1; i++){
            for (int j = i+1; j < n; j++){
                res[k] = num[i] + num[j];
                k++;
            }
        }
        sort(res, res + k);
        for (int i = k-1; i > k - m-1; i--) {
            cout << res[i] << ' ';
        }cout << endl;
    }

    return 0;
}

以上是未通过代码,time limit exceeded

#include<cstdio>
#include<algorithm>
using namespace std;
int res[5000000];
int num[3050];
int main()
{
    int n,m,i,j,k;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        for(i=0;i<n;i++)
           scanf("%d",&num[i]);
        k=0;
        for(i=0;i<n;i++)
        {
            for(j=i+1;j<n;j++)
            {
                res[k]=num[i]+num[j];
                k++;
            }
        }
        sort(res,res+k);
        for(i=k-1;i>k-m;i--)
          printf("%d ",res[i]);
        printf("%d\n",res[k-m]);
    }
    return 0;
}

以上是通过代码

有些疑惑。