1. 程式人生 > >雜湊演算法---sort 前M大的數

雜湊演算法---sort 前M大的數

給你n個整數,請按從大到小的順序輸出其中前m大的數。 
Input每組測試資料有兩行,第一行有兩個數n,m(0<n,m<1000000),第二行包含n個各不相同,且都處於區間500000,500000−500000,500000的整數。 
Output對每組測試資料按從大到小的順序輸出前m大的數。 
Sample Input
5 3
3 -35 92 213 -644
Sample Output
213 92 3

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int num[1000010];//  0-499999 是負數   500001-1000000是正數  500000是0
int main()
{
	int n,m,t,i;
	while(scanf("%d %d",&n,&m)!=EOF)
	{
		memset(num,0,sizeof(num));
		for(i=0;i<n;i++)
		{
			scanf("%d",&t); 
			num[t+500000]++;
		}
		for(i=1000000;i>=0&&m;i--)
		{
			if(num[i])
			{
				printf("%d",i-500000);
				m-=1;
				if(m)
					printf(" ");
			}
		}
		printf("\n");
	}
	
	return 0;
 } 

Time limit 1000 ms Memory limit 32768 kB OS Windows
Status Accepted
Time 764ms
Memory 5484kB
Length 460
Lang G++
Submitted