在小慕的魔法实验室里,他搭建了一套名为「星辉」的远程施法系统。系统对外开放了多个 `Test` 法术接口,供其他魔法师调用。每一次调用都会被记录在一份星辉日志中。每条记录为两个整数 `time` 和 `interfaceId`,表示某个法术接口 `interfaceId` 在时间 `time` 被调用了一次。 作为系统的维护者,小慕需要检查哪些法术接口存在异常高频调用行为。给定一个时间窗口长度 `timeSegment`,如果某个法术接口在一个 内被调用的次数不少于 `minLimits` 次,小慕就认为该接口是,可能被用于非法法术实验。 请你帮小慕找出所有满足条件的高频接口编号,并按升序输出。如果没有找到任何高频接口,请输出一个 `-1`。
提示:带虚线的词点一下有通俗解释。
输入描述
- 第一行一个整数 `n`,表示调用记录的数量。 - 接下来 `n` 行,每行两个整数 `time` 和 `interfaceId`,表示一次接口调用。 - 接下来一行一个整数 `timeSegment`,表示时间窗口长度。 - 最后一行一个整数 `minLimits`,表示窗口内最小调用次数。 满足: - `1 <= n <= 10^5` - `0 <= time <= 10^6` - `0 <= interfaceId <= 10^5` - 所有 `time` 保证非递减 - `1 <= timeSegment <= 10^5` - `1 <= minLimits <= n`
输出描述
- 若存在高频接口,输出一行若干个升序排列的接口编号,以空格分隔。 - 若不存在,输出`-1`。
示例
示例 1
输入
8 0 1 0 10 9 1 10 10 20 3 25 3 100 3 100 3 10 2
输出
1 3
说明:- 接口 `1`:在时间窗口 `[0, 10)` 中被调用两次(时间为 `0` 和 `9`),满足条件; - 接口 `3`:在时间窗口 `[100, 110)` 被调用两次(时间为 `100`, `100`),也满足条件; - 接口 `10`:两次调用时间为 `0` 和 `10`,不在同一个窗口,不满足条件。
时间限制 1000 ms · 内存限制 128 MB