AcWing 1238. 日志统计
原题链接
中等
作者:
戾儿
,
2021-04-05 23:17:36
,
所有人可见
,
阅读 312
(双指针)
C++ 代码
#include <bits/stdc++.h>
using namespace std;
typedef pair<int ,int> PII;
const int N=100100;
int n,m,d,k;
int st[N],cnt[N];//st存储热帖编号 cnt存储收到的赞
PII a[N];
int main()
{
cin>>n>>d>>k;
for(int i=0;i<n;i++) cin>>a[i].first>>a[i].second;
sort(a,a+n);
for(int i=0,j=0;i<n;i++)
{
int ts=a[i].first,id=a[i].second;
cnt[id]++;
while(ts-a[j].first>=d)//指针j变动条件
{
cnt[a[j].second]--;//j要向后移,则相对应id的赞数要减
j++;
}
if(cnt[id]>=k) st[id]++;
}
for(int i=0;i<=100000;i++)
if(st[i]) cout<<i<<endl;
return 0;
}