1. 程式人生 > >構造雜湊表——求前m大的數

構造雜湊表——求前m大的數

Problem Description

    給你n個整數,請按從大到小的順序輸出其中前m大的數。

Input

    每組測試資料有兩行,第一行有兩個數n,m(0<n,m< 1000000),第二行包含n個各不相同,
    且都處於區間[-500000,500000]的整數。

Output

    對每組測試資料按從大到小的順序輸出前m大的數。
#include <bits/stdc++.h>
using namespace std;

const int maxn = 10000001;
int a[maxn];

int main()
{
    int n, m;
    cin >> n >> m;
    memset(a, 0, sizeof(a));
    int t;
    for (int i = 0; i < n; ++i) {
        cin >> t;
        a[t+500000]++;
    }
    for (int i = 1000000; i >= 1; --i) {
        while(a[i] && m)
        {
            cout << i-500000 << " ";
            a[i]--;
            m--;
        }
    }
    return 0;
}