这种方法也是万万没想到的~
#include<iostream>
#define maxn 1000000+5
using namespace std;
int f[maxn];
int n,m;
int main()
{
	cin.sync_with_stdio(false);
	while(cin>>n>>m)
	{
		fill(f,f+maxn,0);
		for(int i=0;i<n;i++)
		{
			int x;
			cin>>x;
			f[x+500000]++;
		}
		int flag=0;
		for(int i=maxn-1;i>=0;i--)
		{
			if(f[i])
			{
				while(f[i]--)
				{
					if(flag) cout<<" ";
					cout<<i-500000;
					flag++;
					m--;
					if(!m) goto en;
				}
			}
		}
		en:
		cout<<endl;
	}
	return 0;
}
 
原文:http://blog.csdn.net/zafkiel_nightmare/article/details/46486567