HDU 1425 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
//用排序的数当成坐标
//对于排序来说适用比较窄

#include <stdio.h>//比用快排做快了200Ms
#include <string.h>
#include <stdlib.h>
int
 a[1000001];
int
 main()
{
  //freopen("in.txt","r",stdin);

  int
 n,m,k;
  while
(scanf("%d%d",&n,&m)!=EOF)
  {
   memset(a,0,sizeof(a));
      while
(n--)
      {

          scanf("%d",&k);
          a[k+500000]=1;
      }

    for
(n=1000000;n>=0;n--)
        if
(a[n])
        {

            if
(!m--)
              break
;
           printf("%d",n-500000);
             break
;
        }

      for
(n--;n>=0;n--)
        if
(a[n])
         {

             if
(!m--)
              break
;
              printf(" %d",n-500000);
         }

        printf("\n");
  }

  return
 0;
}

                                              --------江财小子

原文地址:https://www.cnblogs.com/372465774y/p/2421650.html