解题思路
贴一个哈希表的做法
思路:开一个map[HTML_REMOVED]>将给定的id存入第一个键,给定的时间存入vector中,然后用auto去遍历id,并将后面vector排序后,去遍历vector 命名为v,从i开始加k后判断v[i ] + D > v[i + k],说明是热帖,直接输出id并跳出循环即可
#include <iostream>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;
int n, m, k;
int main()
{
scanf("%d%d%d", &n, &m, &k);
map<int, vector<int>>hash;
for(int i = 1; i <= n; i++)
{
int l, r;
scanf("%d%d", &l, &r);
hash[r].push_back(l);
}
for(auto it : hash)
{
int l = it.first;
sort(it.second.begin(), it.second.end());
vector<int>v = it.second;
int size = v.size();
for(int i = 0; i + k - 1 < size; i++)
{
if(v[i] + m > v[i + k - 1])
{
printf("%d\n", l);
break;
}
}
}
return 0;
}