#include <stdio.h>
#include <stdlib.h>
#define N 100010
int n,d,k;
int t[N]; //记录热帖
typedef struct{
int st; // 编号
int id; // 热度得到的赞
}Node;
int cmp(const void* a,const void* b)
{
return ((Node*)a)->st - ((Node*)b)->st; //排序
}
int main()
{
scanf("%d %d %d",&n,&d,&k); //个数 时间段 热度标准
Node s[100001]; //个数最大值
for(int i=0;i<n;i++)
scanf("%d %d",&s[i].st,&s[i].id); // 输入元素个数
qsort(s,n,sizeof(Node),cmp); //库排序
int cut[100001]; // 记录热度
for(int i=0,j=0;i < n;i++)
{
cut[s[i].id]++; //热度+1
while(s[i].st - s[j].st >= d) //滑动窗口 判断时间段内的热度 (双指针思想 同步异形)
{
cut[s[j].id]--;
j++; //跳跃这个时间段
}
if(cut[s[i].id]>=k) //判断是否为热帖
{
t[s[i].id] = 1; //记录为热帖的id
}
}
for(int i=0;i<100000;i++)
{
if(t[i])
printf("%d\n",i);
}
return 0;
}
日志统计(详细版)
最新推荐文章于 2024-05-30 16:17:47 发布