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 翻译