直接對n*(n-1)/2個(gè)數(shù)字排序,規(guī)模太大!注意到每個(gè)數(shù)字的取值范圍并不大,兩兩之和最大不過10000,用time[i]記錄數(shù)字i在和中出現(xiàn)的次數(shù)。
以下是我的代碼:
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int kMaxn = 3001;
const int kMaxs = 10001;
int n,m,r[kMaxn],times[kMaxs];
int main()
{
/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
//*/
while(cin>>n>>m)
{
for(int i=1;i<=n;i++)
cin>>r[i];
fill(times,times+kMaxs,0);
for(int i=2;i<=n;i++)
for(int j=1;j<i;j++)
times[r[i]+r[j]]++;
bool first=true;
for(int i=kMaxs-1,j=0;j<m && i>=0;i--)
while(times[i])
{
if(first) first=false;
else cout<<" ";
cout<<i;
j++;
if(j>=m) break;
times[i]--;
}
cout<<endl;
}
return 0;
}
posted on 2011-02-28 21:37
lee1r 閱讀(261)
評論(0) 編輯 收藏 引用 所屬分類:
題目分類:基礎(chǔ)/模擬