九度:テーマ1034:大金持ちを探す
1127 ワード
タイトルの説明:
浙江桐郷烏鎮にはn人がいます.この町の元m人の大金持ちを見つけてください.
入力:
複数組の試験用例を入力.
各例は、まず2つの整数n(0nとmが同時に0の場合は入力終了を示す.
出力:
烏鎮前のm個の大金持ちの財産数を出力してください.財産の多い列の前に、大金持ちがm個未満であれば、すべて出力して、各グループの出力は1行を占めます.
サンプル入力:
サンプル出力:
浙江桐郷烏鎮にはn人がいます.この町の元m人の大金持ちを見つけてください.
入力:
複数組の試験用例を入力.
各例は、まず2つの整数n(0
出力:
烏鎮前のm個の大金持ちの財産数を出力してください.財産の多い列の前に、大金持ちがm個未満であれば、すべて出力して、各グループの出力は1行を占めます.
サンプル入力:
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;
}