VladmirZ的签到题
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
这是一道交互题。
关于如何作答交互题,请参阅 Interactive Problems: Guide for Participants - Codeforces。
题目背景
随着 CCNUACM
协会的现代化建设进入新时代,N405
面临的主要矛盾已经转化为成员日益增长的工位需要和 N405
脏乱差的工作环境之间的矛盾。只有正确认识这一主要矛盾,才能确定正确的战略、策略、政策和办法,促进矛盾解决,推动 CCNUACM
协会进步。
必须认识到, CCNUACM
主要矛盾的变化,是关系全局的历史性变化,对协会工作提出了许多新要求。在新任会长 wang_by
的带领下, CCNUACM
协会的同学们勇于担当,攻坚克难,发动了 N405
全面扫除大会战。
题目描述
N405
的工位中,有的已经有主,有的因为(前主人毕业\杂物堆积\正对空调)等原因暂无人使用。为了进行扫除,你需要确定 N405
的工位中哪些有人占用,哪些没有人占用,并清扫那些无人使用的工位。
你并不了解工位的占用情况。好消息是,N405
的红太阳 wang_by
会长全都知道。显然的,他很忙,因此你不能问他太多问题。
你可以向会长大人进行若干次询问:
- 会长大人首先告诉你一个数 ,表示
N405
有 个工位。 - 每次询问时,你应当给出一个只包含 两种字符的,长度为 的字符串。这代表了你对占用情况的猜测:如果第 位被占用了,请输出 ,否则输出 。
- 每次询问后,会长大人会返回给你一个数 ,表示你猜测被占用的工位中,真正被占用的工位的数量。
你需要找出全部工位的真实占用情况。
交互协议
在交互开始时从标准输入流中读入整数 。
要进行查询,请输出 ? s
,其中 s
是你要查询的字符串。随后,从标准输入流中读入一个数 ,即本次查询的结果。
特别的,如果您收到的不是答案,而是整数 ,则表示您的程序进行了无效查询、超出了查询次数限制,或给出了错误答案。您的程序必须立即终止,才能收到 Wrong Answer
判决。否则,您可能会得到一个任意判决(保证不是Accepted
),因为您的程序将继续从一个封闭的数据流中读取数据。
要做出最终回答,请输出 ! s
,其中 s
是你的答案字符串。做出回答不计入交互次数。请确保你输出答案后正常退出程序,而不应继续进行交互。
输出查询后,不要忘记输出行尾并刷新输出。否则会出现超过闲置限制 (Idleness Limit Excceed
) 的情况。为此,请使用:
- C++ 中使用 fflush(stdout) 或 cout.flush();
- Java 中的 System.out.flush();
- Python 中的 stdout.flush();
- 其他语言请参考相关文档。
友善的
neurotic
提醒你:取消同步流解绑并使用std::endl
换行即可。
样例
5
1
3
3
? 10101
? 11111
? 11110
! 11010
限制
保证工位数 。
你不能进行超过 次询问。