#326. [R52E]RECAL
[R52E]RECAL
时空限制
1S/512M
题目描述
这是一道交互题。
注意:本题并不是排列游戏(perm)。
虽然这同样是一道交互题,同样也是在猜排列,但是它真的不是排列游戏。
交互器内部隐藏着一个长度为 的未知排列 (即 的每个整数在 中恰好出现一次)。
你可以通过给出 串来进行查询以推断出该排列。在每一次查询中,你需要向交互器输出一个长度为 的 字符串 。
交互器读取 之后会向你返回一个同样长度为 的 字符串 。其中返回的字符串 满足:
注:此处的字符串下标从 开始计数。
你需要在不超过 次询问内求出这个隐藏的排列 。
格式
交互格式
首先,你的程序需要从标准输入中读取一个正整数 ,表示排列的长度。
接下来,你可以发起最多 次询问。对于每次询问:
-
你需要向标准输出打印
? s(其中 是一个长度为 的且仅包含0和1的字符串),并刷新缓冲区。(例如 C++ 中的cout << endl;或fflush(stdout);) -
随后,你的程序需要从标准输入读取一个长度为 的 字符串 ,这就是交互器返回给你的结果。
当你确定了隐藏的排列 后,你需要按如下格式输出答案:
- 向标准输出打印
! P[1] P[2] ... P[n](各个元素之间用空格分隔),并刷新缓冲区,随后正常结束程序。
注意:
- 在每次输出后,请务必打印换行符并刷新标准输出缓冲区。否则,可能会被判为
TLE(超时)。 - 如果你的输出格式不正确或程序异常提前终止,判定结果将是不确定的。
- 在输出答案后,请立即终止程序。否则,判定结果将是不确定的。
样例
样例输入/输出 #1
以下是一个交互的示例。在这个例子中,隐藏的排列为 。
| 你的程序输出(标准输出) | 交互器返回(标准输入) | 解释 |
|---|---|---|
4 |
读取到排列长度 | |
? 1001 |
询问 | |
0110 |
||
? 1010 |
询问 | |
1100 |
||
? 0001 |
询问 | |
0010 |
||
! 3 1 4 2 |
成功得到结果并输出。 |
数据规模
注意:你只有通过了子任务的所有测试点,才能获得对应子任务的分数。
| 子任务编号 | 分数 | |
|---|---|---|
对于 的数据,。每次测试中,排列 在交互开始前就已经固定,交互器不是自适应的。
Related
In following contests: