QOJ.ac

QOJ

Time Limit: 0.5 s Memory Limit: 256 MB Total points: 100

#13181. 非交互式猜数字

Statistics

Romanos 和 Theodora 正在玩一个游戏。最初,Theodora 在 $1$ 到 $N$(包含 $1$ 和 $N$)之间选择一个数字。Romanos 的目标是确定这个数字。他最多可以进行 $K$ 次猜测。对于每一次猜测,他会大声说出一个数字作为他的猜测。随后,Theodora 会根据确切的情况给出以下回答之一: “我的数字比你的猜测小 (<)”, “我的数字比你的猜测大 (>)”,或者 * “你的猜测正确 (=)”。

游戏会在以下任一情况发生后立即结束: Romanos 猜中了正确的数字(他赢了),或者 所有 $K$ 次猜测都错了(他输了)。

遗憾的是,Romanos 并没有认真玩这个游戏。他知道赢得这个游戏的最佳策略,但他并不总是使用它。尽管如此,他假装自己玩得很认真,因此他的猜测永远不会是愚蠢的。换句话说,他的猜测始终是 $1$ 到 $N$ 之间的一个数字,并且始终与 Theodora 之前的所有回答保持一致。

例如,假设 $N$ 为 $10$,Romanos 的第一次猜测是 $4$。如果 Theodora 回答“我的数字比你的猜测小 (<)”,那么 Romanos 的下一次猜测将始终在 $1$ 到 $3$ 之间(包含 $1$ 和 $3$)。

与 Romanos 不同,Theodora 玩得太认真了。她想赢(通过让 Romanos 输),并按如下方式“作弊”。

自适应地,Theodora 可能会在与她之前所有回答保持一致的前提下尽可能地改变她的数字。为了做到这一点,只要有可能,Theodora 总是会回答“我的数字比你的猜测小 (<)”或“我的数字比你的猜测大 (>)”,以使可能的答案范围最大化。如果出现平局,她总是会回答前者 (<)。

例如,假设 $N$ 为 $10$,Romanos 的第一次猜测是 $4$。Theodora 总是会回答“我的数字比你的猜测大 (>)”,因为可能的答案范围将是 $5$ 到 $10$(包含 $5$ 和 $10$);这比 $1$ 到 $3$(包含 $1$ 和 $3$)的范围更大。

现在,这是 Romanos 提出的实际问题。给定 $N$、$K$ 以及 Theodora 对每次猜测的回答,你能展示出 Romanos 猜测的一种可能方案,或者说明这是不可能的吗?

输入格式

第一行包含两个整数:$N$ 和 $K$ ($1 \le N \le 10^{18}$; $1 \le K \le 50,000$),分别表示数字范围和猜测次数。第二行包含一个字符串,表示 Theodora 的回答。字符串中的每个字符要么是 '<',要么是 '>',要么是 '=',并且满足以下条件之一: 字符串的最后一个字符是 '=',且除最后一个字符外的每个字符都是 '<' 或 '>',且字符串长度不超过 $K$,或者 字符串的长度恰好为 $K$,且每个字符都是 '<' 或 '>'。

输出格式

  • 如果存在 Romanos 猜测的可能方案,则输出 $M$ 个整数:$A_1 \ A_2 \ \dots \ A_M$,表示 Romanos 的猜测,其中 $M$ 是字符串的长度,$A_i$ 是 Romanos 的第 $i$ 次猜测。如果存在多种可能的方案,你可以输出其中任意一种。
  • 如果不存在 Romanos 猜测的可能方案,则仅输出 -1。

样例

样例输入 1

10 5
><>=

样例输出 1

5 8 6 7

样例输入 2

10 5
><<><

样例输出 2

4 10 8 5 7

样例输入 3

10 5
<>=

样例输出 3

-1

样例输入 4

10 9
>>>>>>>>>

样例输出 4

1 2 3 4 5 6 7 8 9

样例输入 5

10 10
>>>>>>>>>>

样例输出 5

-1

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.