sort 

给你n个整数,请按从大到小的顺序输出其中前m大的数。 
Input每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。 
Output对每组测试数据按从大到小的顺序输出前m大的数。 

Sample Input
5 3
3 -35 92 213 -644
Sample Output
213 92 3

注意
第二行的数字有负数,因此设立区间时应用1000005,存储时应加上500000,输出是应减去500000

代码
#include <bits/stdc++.h> 
int a[1000005]; 
int main() {
     int n,m,s,f=0;
     while(~scanf("%d %d",&n,&m)){
         memset(a,0,sizeof(a)); //清空数组中的元素
         for(int i=0;i<n;i++){
             scanf("%d",&s);
             a[s+500000]++;
         }
         f=0;
         for(int i=1000005;i>=0;i--){
             if(a[i]!=0 && f==m-1){
                 printf("%d\n",i-500000);
                 break;
             }
             if(a[i]!=0){
                 printf("%d ",i-500000);
                 f++;
             }
         }
     }
     return 0;
 }