E - 寻找大富翁
浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁.
每个用例首先包含2个整数n(0<n<=100000)和m(0<m<=10),其中: n为镇上的人数,m为需要找出的大富翁数, 接下来一行输入镇上n个人的财富值.
n和m同时为0时表示输入结束.
3 1 2 5 -1 5 3 1 2 3 4 5 0 0
5 5 4 3
运用sort排序;注意可能有人财富相同;注意n<m的情况;
程序如下:#include<cstdio> #include<cstring> #include<algorithm> using namespace std; bool cmp(int a,int b) { return a>=b; } int main() { int n,m; while(scanf("%d%d",&n,&m)&&n!=0||m!=0) { int i,j,a[100003]; for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n,cmp); if(m<=n) { for(i=0;i<m;i++) printf("%d%c",a[i],i==m-1?'\n':' '); } else { for(i=0;i<n;i++) printf("%d%c",a[i],i==n-1?'\n':' '); } } return 0; }