Bessie提前知道,列车有N节车厢(1≤N≤1000,000),方便起见编号为0…N−1。车厢ii有一个编号写在上面(0≤ci≤1000,000,000)。所有的数字在早晨和下午都能被看见,所以对于每节车厢Bessie有两次机会观察它的编号。也就是说,当列车早晨经过的时候,Bessie能够观察
,然后是
,直到
。当列车下午驶回的时候,她又一次能够观察
,然后是
,直到
。
Bessie挑选了一个整数K(1≤K≤N),她想要求出每个连续的K节车厢中最小的编号。她有一本能够帮助执行计算的笔记本,但是它相当小,并且Bessie的手写(蹄写?)字相当大。比方说,可能没有足够的空间记下所有N+1−K个最小值。由于某些神秘的原因,Bessie满足于当她算出最小数的时候向天哞出这些数,所以这个问题至少还不成问题。
列车马上就要来了!帮助Bessie在列车经过两次之后求出这N+1−K个最小数,确保她有效地利用她有限的笔记本空间。她的笔记本被分为5500个部分,方便起见编号为0…5499,每个部分的空间恰好能够记录一个在之间的整数。最初的时候,每个部分都记录着整数0。
这是一道交互式题目,你不需要使用标准(或文件)输入输出。具体地说,你需要实现下面的函数,这个函数用来帮助Bessie有效管理她有限的笔记本空间:
void helpBessie(int ID);
每当一节列车车厢经过的时候,无论是在早晨和下午,你的函数都会被调用,函数的输入是这节车厢的编号。
// If you find it necessary, you may import standard libraries here. void helpBessie(int ID) { // 完成这个函数,不要修改其他代码 }
Bessie拥有惊人的短时记忆能力,因此在helpBessiehelpBessie函数中没有任何的内存使用限制,除了要满足常规的256MB限制。然而,在车厢与车厢之间,Bessie不能够“记住”任何不在笔记本中出现过的内容。所以在两次函数调用之间,你的程序除了通过getget和setset函数调用之外不能保存任何的状态。
这意味着:
不允许定义任何非常量的全局或静态变量。任何如此做的提交会被取消成绩。教练会人工检查所有的提交以验证是否符合题目要求。由于这个问题无需文件输入输出,所以也不允许在代码中使用任何的文件输入输出。
对于每个测试点,你的程序进行的setset调用和getget调用的总次数被限制为次。
第一行两个数N,K,接下来一行N个数,第i个数表示,
输出N-K+1个数,表示Bessie向天哞的数,
调用 void shoutMinimum (int output) 函数进行输出。