Problem Description 浙江桐鄉烏鎮共有n個人,請找出該鎮上的前m個大富翁. Input 輸入包含多組測試用例. 每個用例首先包含2個整數n(0<n<=100000)和m(0<m<=10),其中: n為鎮上的人數,m為需要找出的大富翁數, 接下來一行輸入鎮上n個人的財富值. n和m同時為0時表示輸入結束. Output 請輸出烏鎮前m個大富翁的財產數,財產多的排前面,如果大富翁不足m個,則全部輸出,每組輸出占一行. Sample Input 3 1 2 5 -1 5 3 1 2 3 4 5 0 0 Sample Output 5 5 4 3 [cpp] #include <iostream> #include <cstdio> #include <string.h> #include <stdlib.h> using namespace std; int s[100005]; int cmp(const void *x,const void *y) { return (*(int*)y - *(int*)x); } int main() { int n,m; while(cin >> n >> m) { if(!m && !n) break; memset(s,0,sizeof(s)); int i; for(i = 0; i<n; i++) { cin >> s[i]; } qsort(s,n,sizeof(int),cmp); if(m>=n) { for(i = 0; i<n; i++) { if(!i) cout << s[i]; else cout << " " << s[i]; } } else { for(i = 0; i<m; i++) { if(!i) cout << s[i]; else cout << " " << s[i]; } } cout << endl; } return 0; }