本题是交互题。
有个 100 个点的无向简单图。
你每次可以向交互库询问 a,b,c,交互库会告诉你 a,b,c 三个点之间连了多少条边,并返回你一个 {0,1,2,3} 内的整数。你需要保证 a,b,c 两两不同。
你需要复原出这张图。
实现细节
本题使用 IO 交互,你需要像传统题目一样提交一个可以编译的代码文件。
你初始不需要读入任何内容。你可以通过向标准输出中写入 ? a b c
来发起一次询问,随后从标准输入中读入一个 0 到 3 内的整数,表示交互库的回答。
当你能够复原这张图时,请输出一行 !
,随后输出 100 行,每行一个长度为 100 的 0/1 串 si ,描述这张图。其中 si,j 为 1 当且仅当图中存在 (i,j) 这条边。
记得在每次输出后 flush。
样例
为了方便,在样例里我们假设图中只有 4 个点。注意在实际测试时图中会有 100 个点。
选手输出 | 交互库输出 |
---|---|
? 1 2 3 |
|
0 |
|
? 1 2 4 |
|
2 |
|
? 1 3 4 |
|
2 |
|
! |
|
0001 |
|
0001 |
|
0001 |
|
1110 |
数据范围
所有测试点的图均有恰好 100 个点。
设 Q 表示你的询问次数。如果 Q>161700,或你返回的答案不正确,或你进行了不合法的交互过程,你获得 0 分。
否则,你的得分将通过下表给出。
限制 | 得分 |
---|---|
9900≤Q≤161700 | 10+10⋅161700−Q161700−9900 |
4950≤Q≤9900 | 20+10⋅9900−Q9900−4950 |
3400≤Q≤4950 | 30+10⋅4950−Q4950−3400 |
Q<3400 | 100 |
时间限制:1s
空间限制:512MB