include [HTML_REMOVED]
include [HTML_REMOVED]
define MAXN 100000
define MAXID 100000
typedef struct {
int ts; // 时间戳
int id; // 帖子ID
} Log;
// 比较函数,用于qsort按时间排序
int compare(const void a, const void b) {
return ((Log)a)->ts - ((Log)b)->ts;
}
int main() {
int n, d, k;
scanf(“%d %d %d”, &n, &d, &k);
Log logs[MAXN];
int count[MAXID + 1] = {0}; // 每个帖子的当前窗口点赞数
int isHot[MAXID + 1] = {0}; // 标记热帖
// 输入日志数据
for (int i = 0; i < n; i) {
scanf(“%d %d”, &logs[i].ts, &logs[i].id);
}
// 按时间戳排序
qsort(logs, n, sizeof(Log), compare);
// 滑动窗口+双指针
for (int i = 0, j = 0; i < n; i) {
int post_id = logs[i].id;
count[post_id]; // 增加当前记录的帖子点赞数
// 确保窗口长度为 D
while (logs[i].ts - logs[j].ts >= d) {
count[logs[j].id]–; // 移除窗口左端的记录
j; // 移动左端指针
}
// 检查当前帖子是否为热帖
if (count[post_id] >= k) {
isHot[post_id] = 1; // 标记为热帖
}
}
// 输出所有热帖ID
for (int i = 0; i <= MAXID; i++) {
if (isHot[i]) {
printf(“%d\n”, i);
}
}
return 0;
}