题目描述
小明维护着一个程序员论坛。现在他收集了一份"点赞"日志,日志共有?NN?行。其中每一行的格式是:
ts\ idts?id
表示在?tsts?时刻编号?idid?的帖子收到一个"赞"。
现在小明想统计有哪些帖子曾经是"热帖"。如果一个帖子曾在任意一个长度为?DD?的时间段内收到不少于?KK?个赞,小明就认为这个帖子曾是"热帖"。
具体来说,如果存在某个时刻 T 满足该帖在?[T,T+D)[T,T+D)?这段时间内(注意是左闭右开区间)收到不少于?KK?个赞,该帖就曾是"热帖"。
给定日志,请你帮助小明统计出所有曾是"热帖"的帖子编号。
输入描述
输入格式:
第一行包含三个整数?N,D,KN,D,K。
以下 N 行每行一条日志,包含两个整数 ts 和 id。
其中,1 \leq K \leq N \leq 10^5, 0 \leq ts \leq 10^5,0 \leq id \leq 10^51≤K≤N≤105,0≤ts≤105,0≤id≤105。
输出描述
按从小到大的顺序输出热帖?idid。每个?idid?一行。
输入输出样例
示例
输入
7 10 2
0 1
0 10
10 10
10 1
9 1
100 3
100 3
输出
1
3
#注意这是未通过的代码
n,d,k = map(int,input().split())
class node:
def __init__(self):
self.num = 0
self.arr = []
arr = [node() for i in range(int(1e5+2))]
for _ in range(n):
a,b = map(int,input().split())
arr[b].num+=1
arr[b].arr.append(a)
for i in range(int(1e5)+1):
get = arr[i]
if get.num >= k:
get.arr.sort()
t = False
for j in range(get.num-k+1):
if get.arr[j+k-1]-get.arr[j] < d:
t = True
break
if t:print(i)
未通过的原因还是超时了。。。Python选手表示心很累
运行限制
|