牛客推荐系统开发之动态特征获取
题号:NC219172
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

牛妹有一个微服务,一开始微服务都没有任何的动态特征,取完动态特征之后会存到机器上,如果机器存储了该动态特征就不需要再取,否则就需要进行服务间通信。每一个动态特征都有相同的置信度秒,如果这个动态特征是在时间戳为秒的时候取的,那么这个动态特征在时间戳秒后(包含秒)会被扔掉,需要重新取这个特征。
牛牛给动态特征定义了优先级,如果某个动态特征的最近使用过,那么它的优先级就更高。例如有两个动态特征,一个动态特征A在之前使用过,另一个动态特征B在动态特征A最后一次使用之后都没有使用过,那么动态特征A的优先级就比动态特征B的优先级高。机器只能存放个动态特征,那么优先级前大的动态特征就会被留下,而优先级比第个动态特征优先级小的就会被扔掉。
现在牛妹有一台机器,微服务需要取次动态特征,每一次会告诉你需要取动态特征的ID以及取动态特征的时间戳(单位秒),你需要判断每次取特征需不需要进行服务间通信。

输入描述:

第一行输入三个整数,分别表示需要取动态特征的次数、这台机器能存放动态特征的个数以及所有动态特征的置信度。(
接下来行每行两个整数,分别表示取动态特征的ID以及取动态特征时的时间戳,不保证时间戳按序给出,保证给出的时间戳是两两不相同的。(

输出描述:

对于每一次取动态特征,输出一行字符串。如果需要进行服务间通信则输出YES,否则输出NO。
示例1

输入

复制
8 2 5
1 1
2 2
3 6
2 7
1 8
3 9
2 3
1 4

输出

复制
YES
YES
YES
YES
YES
YES
NO
NO

说明

第1秒,取动态特征1,缓存中没有,则需要服务间通信,将动态特征1放入缓存中,缓存充足不需要进行淘汰。
第2秒,取动态特征2,缓存中没有,则需要服务间通信,将动态特征2放入缓存中,缓存充足不需要进行淘汰。
第3秒,取动态特征2,缓存中有,则不需要服务间通信。
第4秒,取动态特征1,缓存中有,则不需要服务间通信。
第6秒,动态特征1因为不被置信而在缓存中被淘汰。
第6秒,取动态特征3,缓存中没有,则需要服务间通信,将动态特征3放入缓存中,缓存充足不需要进行淘汰。
第7秒,动态特征2因为不被置信而在缓存中被淘汰。
第7秒,取动态特征2,缓存中没有,则需要服务间通信,将动态特征2放入缓存中,缓存充足不需要进行淘汰。
第8秒,取动态特征1,缓存中没有,则需要服务间通信,将动态特征1放入缓存中,此时缓存超出2个动态特征,动态特征3因为优先级是最低的而被淘汰。
第9秒,取动态特征3,缓存中没有,则需要服务间通信,将动态特征3放入缓存中,此时缓存超出2个动态特征,动态特征2因为优先级是最低的而被淘汰。
示例2

输入

复制
5 2 100
1 1
2 2
1 3
3 4
2 5

输出

复制
YES
YES
NO
YES
YES

说明

第1秒,取动态特征1,缓存中没有,则需要服务间通信,将动态特征1放入缓存中,缓存充足不需要进行淘汰,此时动态特征1的优先级是最高的。
第2秒,取动态特征2,缓存中没有,则需要服务间通信,将动态特征2放入缓存中,缓存充足不需要进行淘汰,此时动态特征2的优先级是最高的。
第3秒,取动态特征1,缓存中有,则不需要进行服务间通信,此时动态特征1的优先级是最高的。
第4秒,取动态特征3,缓存中没有,则需要服务间通信,将动态特征3放入缓存中,此时缓存超出2个动态特征,动态特征2因为优先级是最低的而被淘汰,此时动态特征3的优先级是最高的。
第5秒,取动态特征2,缓存中没有,则需要服务间通信,将动态特征2放入缓存中,此时缓存超出2个动态特征,动态特征1因为优先级是最低的而被淘汰,此时动态特征2的优先级是最高的。