http://acm.hdu.edu.cn/showproblem.php?pid=3785

View Code
#include <stdio.h>
#include <stdlib.h>
#define INF 200000000
int cmp(const void*a,const void*b)
{
    return *(int*)b-*(int*)a;
}
int a[110000];
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m),(n||m))
    {
        for(int i=0;i<100001;i++)
            a[i]=INF;
        for(int i=0;i<n;i++)
            scanf("%d",a+i);
        qsort(a,n,sizeof(int),cmp);
        int f=1;
        for(int i=0;i<m;i++)
        {
            if(a[i]==INF)continue;
            if(f)
            {
                printf("%d",a[i]);
                f=0;
            }
            else 
                printf(" %d",a[i]);
        }
        putchar('\n');
    }
    return 0;
}