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;
}
--------江财小子