luogu#P7824. 「RdOI R3」毒水

「RdOI R3」毒水

题目描述

这是一道 IO 交互题。

现在你面前有 nn 瓶水,从 1n1\sim n 编号,其中有 11 瓶水有毒,你可以用一些小白鼠来进行判断。

但是你找的小白鼠中有且仅有一只变异鼠如果它喝的水中有毒水,那么它不会死亡。否则它会在 5959 秒内死亡。其它小白鼠如果喝了毒水将在 5959 秒内死亡,否则不会死亡

你需要在一分钟内找出这瓶毒水,因为测试已经花了 5959 秒,所以你的代码只能运行 11 秒。

交互方式

首先你需要从标准输入读取两个整数 nnmaxkmaxk,表示水的数量,以及你最多能找到的小白鼠个数。

若你需要 kk 只小白鼠,你需要向标准输出打印 k+1k+1 行,除了最后一行,每一行的格式为:1 m B1 B2 ... Bm,表示你找到一只小白鼠并让它喝 B1B_1 号,B2B_2 号,\cdotsBmB_m 号这 mm 瓶中的水。你需要在最后写上一行:2,随后清空缓冲区,表示你不需要更多的小白鼠了。

下面是一些语言的刷新缓冲区操作:

  • C++:fflush(stdout)cout.flush()
  • C: fflush(stdout)
  • Java: System.out.flush()
  • Python: stdout.flush()
  • Pascal: flush(output)
  • 其他语言:请参考对应语言的帮助文档。

当然,如果 k>maxkk>maxk,交互库会返回 WAREUKETLE,同时该测试点不得分。

然后你需要从标准输入读取 kk 个整数 R1,R2,,Rk;Ri{0,1}R_1,R_2,\cdots,R_k;R_i\in\{0,1\}。若 Ri=0R_i=0 代表第 ii 号小白鼠已死亡,否则代表第 ii 号小白鼠仍存活。

最后你需要从标准输出打印一个整数,表示毒水的编号。

注意,请避免你的程序让小白鼠喝相同编号的水,交互库将返回 Repeated poison.

输入格式

交互方式

输出格式

交互方式

4 12













1 0 1 1 1 1 1 1 1 0 1 1


1 1 1
1 1 2
1 1 3
1 1 4
1 1 1
1 1 2
1 1 3
1 1 4
1 1 1
1 1 2
1 1 3
1 1 4
2

2

提示

样例说明

毒水的编号为 22,且第 22 次和第 1010 次均为让小白鼠喝下 22 号毒水,故这两次操作返回的结果为 00。其他操作由于让小白鼠喝的不是毒水,返回的结果为 11

样例仅为理解交互方式使用,可能不符合逻辑。


数据范围

本题采用捆绑测试。

注意:本题不存在一个 subtask 包含其他所有 subtask

subtask 分值 nn maxkmaxk\ge
11 =1=1 00
22 99 1000\le 1000 30003000
33 2020 3030
44 3030 8n168\le n \le 16 77
55 4040 1000\le 1000 1515

注意

只有你向交互器发送 22 操作时,交互器才会将你先前的 11 操作的答案告诉你。也就是说,你不能在执行一次 11 操作后立刻得到这次操作的返回结果。