您的位置:首页 > 其它

HDOJ 3785 寻找大富翁

2016-03-19 12:00 459 查看

寻找大富翁

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 5694 Accepted Submission(s): 2200



[align=left]Problem Description[/align]
浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁.

[align=left]Input[/align]
输入包含多组测试用例.

每个用例首先包含2个整数n(0<n<=100000)和m(0<m<=10),其中: n为镇上的人数,m为需要找出的大富翁数, 接下来一行输入镇上n个人的财富值.

n和m同时为0时表示输入结束.

[align=left]Output[/align]
请输出乌镇前m个大富翁的财产数,财产多的排前面,如果大富翁不足m个,则全部输出,每组输出占一行.

[align=left]Sample Input[/align]

3 1
2 5 -1
5 3
1 2 3 4 5
0 0


[align=left]Sample Output[/align]

5
5 4 3


[align=left]Source[/align]
浙大计算机研究生复试上机考试-2009年

题目放在栈和队列里面,但是用数组也可以解决

#include<stdio.h>
#include<algorithm>
#define G 100010

using namespace std;

bool cmp(int x,int y){
return x>y;
}

int main() {
int n,m,wqs[G];
while(scanf("%d%d",&n,&m)&&(n||m)) {
for(int j=0; j<n; j++) {
scanf("%d",&wqs[j]);
}
sort(wqs,wqs+n,cmp);
if(m>n) {
for(int j=0; j>=1; j++)
printf("%d ",wqs[j]);
printf("%d\n",wqs[n+1]);
} else {
for(int i=0; i<m-1; i++)
printf("%d ",wqs[i]);
printf("%d\n",wqs[m-1]);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: