构造哈希表——求前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;
}

猜你喜欢

转载自blog.csdn.net/qq_40438165/article/details/83421944