九度:题目1034:寻找大富翁

题目描述:
    浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁.
输入:
    输入包含多组测试用例.
    每个用例首先包含2个整数n(0<n<=100000)和m(0<m<=10),其中: n为镇上的人数,m为需要找出的大富翁数, 接下来一行输入镇上n个人的财富值.
    n和m同时为0时表示输入结束.
输出:
    请输出乌镇前m个大富翁的财产数,财产多的排前面,如果大富翁不足m个,则全部输出,每组输出占一行.
样例输入:
3 1
2 5 -1
5 3
1 2 3 4 5
0 0
样例输出:
5
5 4 3
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;  
     
int main()  
{  
	freopen("C:\\in.txt","r",stdin);
	int N,M;
	while(cin>>N>>M){
		if(!N&&!M)break;
		vector<int> money(N);
		for(int i=0;i<N;i++){
			cin>>money[i];
		}
		if(M>N)M=N;

		make_heap(money.begin(),money.end());
		
		for(int i=0;i<M;i++){
			if(i==M-1)cout<<money.front();
			else cout<<money.front()<<" ";
			pop_heap(money.begin(),money.end());
			money.pop_back();
		}
		cout<<endl;
	}
	return 0;  
}  




你可能感兴趣的:(九度)