#D0644. [DAY21]反向猜数字

[DAY21]反向猜数字

这是一道交互式题目。

题目描述

33DAI 想和你玩猜数字游戏,你需要想好一个答案。然后他会猜 nn 次,每次会乱猜一个数,你需要告诉他猜得数大了、小了还是对了。

显然你可以通过中途改变想的数来让他猜次数尽可能多,但你必须保证最终你的回答能对应到某个数上,不能自相矛盾。

答案和每次猜的数都必须在 1R1\sim R 的范围内,请你想想每次该怎么回复他。

交互格式

首先,你的程序需要从标准输入读取两个整数 n,Rn,R

然后,就开始 nn 轮猜数字了。

每一轮你需要先读取 33DAI 猜的数,然后你需要输出 1,1,01,-1,0 三个数之一并刷新缓冲区,分别表示“大了”、“小了”还是“对了”。

在 C++ 中,cout 可以使用 cout.flush(); 刷新,或 endl 实现换行并刷新,printf 可以使用 fflush(stdout); 来强制刷新缓冲区。

如果你的 nn 次回复没有矛盾,且每一步都会让 33DAI 猜测次数尽可能多,那你就可以通过这道题。

3 10
2
7
9
-1
1
1

第一轮 33DAI 猜 22,如果你回复他大了,那他下一轮就会猜出来正确答案是 11 了,所以只能回复小了。

数据规模与约定

1n1001 \le n\le 100100R106100\le R \le 10^6