CF1286C1 Madhouse (Easy version)

题目描述

本题与困难版本的唯一区别在于对所有答案总长度的限制。 这是一个交互题。 Venya 参加了一个疯人院的参观活动,护工们与病人们玩了如下的游戏。护工们选择了一个长度为 $n$ 的字符串 $s$,该字符串仅由小写英文字母组成。玩家可以进行两种类型的询问: - ? l r —— 询问 $s[l..r]$ 的所有子串。所有子串将以随机顺序返回,并且每个子串中的所有字符也会被随机打乱。 - ! s —— 猜测护工们选定的字符串。该询问只能进行一次,之后游戏结束。如果猜测正确,玩家获胜,否则失败。 玩家最多只能进行 $3$ 次第一种类型的询问。 为了方便护工们,还有一个额外的限制:所有第一类询问返回的子串总数不能超过 $(n+1)^2$。 Venya 请你编写一个程序,通过与护工们的程序交互,并按照游戏规则猜出字符串。 你的程序在使用第二种类型的询问猜测字符串后应立即终止。如果猜测错误,或者违反了游戏规则,你将收到 Wrong answer 的判定。 注意,每个测试用例中的字符串在游戏开始前就已固定,游戏过程中不会改变,也就是说交互器不是自适应的。

输入格式

第一行包含一个整数 $n$($1 \le n \le 100$),表示被选中的字符串的长度。

输出格式

你需要通过读取 $n$ 开始交互。 若要询问从 $l$ 到 $r$($1 \le l \le r \le n$)的子串,应输出 ? l r 并换行。之后将返回 $s[l..r]$ 的所有子串,顺序随机,每个子串中的字符也会被随机打乱。 如果你的询问不合法,或第一类询问超过 $3$ 次,或所有返回的子串总数超过 $(n+1)^2$,你将收到 Wrong answer 的判定。 若要猜测字符串 $s$,应输出 ! s 并换行。 每次输出询问后,务必刷新输出缓冲区,否则会收到 Idleness limit exceeded 的判定。你可以使用: - C++:fflush(stdout) 或 cout.flush() - Java:System.out.flush() - Pascal:flush(output) - Python:stdout.flush() - 其它语言请查阅相关文档。 如果你在任何一次询问后收到 -(短横线)作为回答,需立即以退出码 0 终止程序(例如调用 exit(0))。这表示交互协议出现错误。如果不这样做,可能会收到任意失败判定。 Hack 格式 若要进行 Hack,请使用如下格式: 第一行包含一个整数 $n$($1 \le n \le 100$),第二行包含字符串 $s$。

说明/提示

由 ChatGPT 4.1 翻译