#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; }
以上是通过代码
有些疑惑。