[_-0 C] 猜数

题目背景

小 $\mathfrak{f}$ 和小 $\mathfrak{g}$ 在玩猜数游戏,但是因为风声太大,他们听不清楚对方说的话……

题目描述

评测机在区间 $[1,n]$ 中等概率随机地选择一个整数 $x$,你的任务是猜测这个数。 你可以每次给出一个 $[1,n]$ 中的整数 $y$,询问 $y$ 和 $x$ 的大小关系。你最多可以询问 $q$ 次。 但是,由于某些原因,评测机有 $p\%$ 的概率会出错。 具体地说: - 如果 $y=x$,那么评测机返回 `=`。 - 如果 $y\ne x$,且当前已经是第 $q$ 次询问,那么评测机返回 `!`。 - **得到以上两种结果后,你应当停止询问。** - 如果 $y>x$,那么评测机有 $(100-p)\%$ 的概率返回 `>`,有 $p\%$ 的概率返回 `<`。 - 如果 $y<x$,那么评测机有 $(100-p)\%$ 的概率返回 `<`,有 $p\%$ 的概率返回 `>`。 每次询问,你需要向**标准输出**输出一个 $[1,n]$ 中的整数,**然后清空缓冲区**。 你可以使用如下语句来清空缓冲区: - 对于 C/C++:`fflush(stdout)`; - 对于 C++:`std::cout << std::flush`; - 对于 Java:`System.out.flush()`; - 对于 Python:`stdout.flush()`; - 对于 Pascal:`flush(output)`; - 对于其他语言,请自行查阅对应语言的帮助文档。 特别的,对于 C++ 语言,在输出换行时如果你使用 `std::endl` 而不是 `'\n'`,也可以自动刷新缓冲区。 然后你需要从**标准输入**中输入一个字符,代表评测机返回的结果。

输入输出格式

输入格式


开始询问之前,一行,三个用空格分隔的整数 $n,p,q$。 对于每一次询问,一行,一个字符,一定是 `=`,`!`,`>`,`<` 四者之一。

输出格式


对于每一次询问,一行,一个 $[1,n]$ 中的整数。

输入输出样例

输入样例 #1

100 0 10

>

<

=

输出样例 #1


50

25

37

输入样例 #2

100 10 10

<

<

=

输出样例 #2


50

25

37

输入样例 #3

100 0 2

>

!

输出样例 #3


50

25

说明

**样例 $1$ 解释:** 此时该测试点的状态为 `AC`。 **样例 $2$ 解释:** $x=37,y=50$ 时,$y>x$,有 $10\%$ 的概率输出 `<`,恰好输出了 `<`。 **样例 $3$ 解释:** 此时该测试点的状态为 `WA`。 **本题采用捆绑测试。** 每个 Subtask 下设有 $5$ 个测试点,你只需通过其中**至少 $3$ 个**测试点即可得到该 Subtask 对应的分数。 本题不使用子任务依赖。 对于所有数据,$n=10^{18}$。 | 编号 | 分值 | $p=$ | $q=$ | 时限 | | :----------: | :----------: | :----------: | :----------: | :----------: | | $0$ | $5$ | $0$ | $60$ | $\texttt{1s}$ | | $1$ | $10$ | $10$ | $500$ | $\texttt{1s}$ | | $2$ | $10$ | $25$ | $2000$ | $\texttt{1s}$ | | $3$ | $15$ | $25$ | $1000$ | $\texttt{1s}$ | | $4$ | $20$ | $25$ | $700$ | $\texttt{1s}$ | | $5$ | $10$ | $25$ | $400$ | $\texttt{1s}$ | | $6$ | $10$ | $40$ | $2500$ | $\texttt{1s}$ | | $7$ | $10$ | $45$ | $10000$ | $\texttt{1s}$ | | $8$ | $5$ | $48$ | $62500$ | $\texttt{3s}$ | | $9$ | $5$ | $49$ | $250000$ | $\texttt{10s}$ |