#P8849. 『JROI-7』hibernal

    ID: 7728 远端评测题 1000ms 128MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>洛谷原创交互题Special Judge洛谷月赛

『JROI-7』hibernal

Description

nn 个苹果,第 ii 个编号为 ii,其中有恰好 22 个是金苹果。

每次询问可以把 nn 个苹果分为两个集合 S1,S2S_1,S_2,要求每个苹果恰好被分到一个集合中。

xxS1S_1 中金苹果的个数,yyS2S_2 中金苹果的个数,交互库会返回 x×yx\times y 的值。

请在不超过 1919 次询问内求出两个金苹果的编号。

交互库自适应,即两个金苹果的编号可能会随着询问而改变,但是始终满足所有已经发生过的询问(见样例)。

Input Format

本题多测,第一行一个正整数 TT,表示数据组数,接下来 TT 行每行一个正整数 nn,表示本组数据里数的个数。

本题采用 IO 交互模式。

交互格式

  • ? k a1 a2 a3 ... ak 将这 kk 个苹果放入一个集合,其他 nkn-k 个苹果放入另一个集合,交互库会返回一个整数 xx 表示答案。请务必保证 0<k<n0<k<n
  • ! x y 输出答案。请务必保证 x<yx<y

请注意:在每组数据中,请保证第一种操作的次数总和不超过 1919

需要注意的是,在每一次操作后,需要调用以下函数刷新缓存:

  • 对于 C/C++:fflush(stdout);
  • 对于 C++:std::cout << std::flush;
  • 对于 Java:System.out.flush();
  • 对于 Python:stdout.flush();
  • 对于 Pascal:flush(output);

对于其他语言,请自行查阅对应语言的帮助文档。

Output Format

见「交互格式」。

1
5

1

0




? 3 1 2 3

? 2 2 4

! 1 5

Hint

样例仅供理解交互过程,可能不符合逻辑。

【样例解释】

初始的两个金苹果为 3,53,5

第一次询问,两个集合各有 11 个金苹果,返回 11,金苹果的编号不发生改变。

第二次询问,一个集合有 22 个金苹果,另一个集合没有,返回 00。接下来两个金苹果从 3,53,5 变成了 1,51,5,容易发现,虽然金苹果的编号发生了变化,前两个询问的答案仍然是符合的。

回答 1,51,5,答案正确,交互结束。


数据范围

分数 n=n= T=T=
1010 22 200200
1818
6464
2020 512512
5050 10001000

计分方式

对于每组测试数据,取 200200 组测试中进行询问次数最大的一组,若超过 1919 次,计 00 分,否则计满分。

保证正常情况下交互库用时不超过 0.1s。

如果您的输出不合法,将会出现 TLE/WA 等情况。