一.题目描述:
浙江桐乡乌镇共有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 <stdio.h>
#include <stdlib.h>
#define MAX 100001
int cmp(const void*a,const void*b)
{
return *(int *)b-*(int *)a;
}
int main()
{
int n,m,i,end;
int *a;
freopen("1034.txt","r",stdin);
a=(int *)malloc(MAX*sizeof(int));
while(scanf("%d%d",&n,&m)&&n&&m)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
qsort(a,n,sizeof(a[0]),cmp);
end=m;
if(m>n)
end=n;
for(i=0;i<end-1;i++)
printf("%d ",a[i]);
printf("%d\n",a[i]);
}
return 0;
}