这是一道交互题。
原来生命的意义是一个 n (2≤n≤100) 的排列。 创造了世上所有生命的 Omkar 知道这个排列,他允许你在有限的询问次数内查询出这个排列是什么。
每一次询问你可以给出一个序列 a1,a2,…,an (1≤a1,a2,…,an≤n) 来对 Omkar 进行询问。 $ a $ 序列不一定要是一个排列。之后 Omkar 会逐个将 ai 与 pi 相加得到一个新的序列 s ,即对于每个 j (1≤j≤n) ,sj=pj+aj 。最后 s 序列中可能会出现一些相同的数,你将读入 Omkar 告诉你的第一个出现相同数的位置。如果没有相同的数出现,你将读入数字 0 。
你最多只能进行 2n 次询问。
显然对于 ai=aj 的两个位置 i,j,它们一定对答案没有贡献,那么考虑询问形如 {2,2,…,2,1,2,2…,2} 的第 i 位为 1,其它位为 2 的序列 a。
记询问只有第 i 位为 1 的 a 的答案为 res1i,那么 res1i 显然有三种情况:
- res1i<i,那么 pi 的前驱是 pres1i;
- res1i=i,那么 pi 的前驱在 [i+1,n] 中;
- res1i=0,那么 pi=1;
接下来考虑获取每个位置的后继以解决 pi 的前驱不确定的情况。类似的,考虑询问形如 {1,1,…,1,2,1,1…,1} 的第 i 位为 2,其它位为 1 的序列 a。
记询问只有第 i 位为 1 的 a 的答案为 res2i,那么 res2i 显然也有三种情况:
- res2i<i,那么 pi 的后继是 pres2i;
- res2i=i,那么 pi 的后继在 [i+1,n] 中;
- res2i=0,那么 pi=1;
这样我们就用 2n 次操作确定了每个 pi 的前驱后继,自然也确定了 p。