QOJ.ac

QOJ

Limite de temps : 2.0 s Limite de mémoire : 1024 MB Points totaux : 100 Interactif Hackable ✓

#10977. 隐藏序列旋转

Statistiques

这是一个交互式问题(你的程序通过标准输入/输出与评测系统进行交互)。

给定一个整数 $N$。评测系统持有一个长度为 $N$ 的隐藏序列 $A = (A_0, \dots, A_{N-1})$,其中每个元素都是 $1$ 到 $10^5$ 之间的整数。注意,整个问题中索引均从 $0$ 开始。

对于整数 $s = 0, \dots, N - 1$ 和 $l = 1, \dots, N$,定义序列 $A(s, l)$ 如下: * 一个长度为 $l$ 的序列,其第 $i$ 个元素为 $A_{(s+i) \pmod N}$,其中 $i = 0, \dots, l - 1$。

你可以向评测系统进行最多 $20$ 次查询,格式如下: 你输出一个整数对列表 $((s_0, l_0), \dots, (s_{k-1}, l_{k-1}))$,需满足以下约束: $1 \le k \le N$ $0 \le s_i \le N - 1$ $1 \le l_i \le N$ $\sum_{i=0}^{k-1} l_i \le N$ 作为响应,评测系统返回所有满足 $A(s_i, l_i)$ 在这些序列中字典序最小的索引 $i = 0, \dots, k - 1$。换句话说,评测系统返回集合 $\{i \mid 0 \le i < k, A(s_i, l_i) = \min_{0 \le i' < k} A(s_{i'}, l_{i'})\}$。

利用这些查询,确定所有满足 $A(s, N)$ 字典序最小的 $s = 0, \dots, N - 1$ 的值。换句话说,找出集合 $\{s \mid 0 \le s < N, A(s, N) = \min_{0 \le s' < N} A(s', N)\}$。

注意,评测系统是非自适应的,这意味着序列 $A$ 在每个测试用例的交互开始前就已经固定。

输入格式

输入格式如下: $N$

  • $N$ 是一个范围在 $1 \le N \le 10^5$ 内的整数。

输出格式

当你确定答案后,按以下格式输出: ! $n$ $s_0$ $s_1$ $\vdots$ $s_{n-1}$

这里 $n$ 是一个整数,每个 $s_i$ 是范围 $0 \le s_i < N$ 内的互不相同的整数,且必须满足: $\{s_0, \dots, s_{n-1}\} = \{s \mid 0 \le s < N, A(s, N) = \min_{0 \le s' < N} A(s', N)\}$。

交互

你可以通过向标准输出打印以下格式来发起查询: ? $k$ $s_0 \ l_0$ $s_1 \ l_1$ $\vdots$ $s_{k-1} \ l_{k-1}$

确保你的查询满足上述条件。 如果查询有效,评测系统将返回: $k'$ $i_0$ $i_1$ $\vdots$ $i_{k'-1}$

这里 $k', i_0, i_1, \dots, i_{k'-1}$ 是整数,$0 \le i_0 < i_1 < \dots < i_{k'-1} < k$,且 $\{i_0, i_1, \dots, i_{k'-1}\} = \{i \mid 0 \le i < k, A(s_i, l_i) = \min_{0 \le i' < k} A(s_{i'}, l_{i'})\}$。

如果你的查询无效(例如,违反了约束或超过了允许的查询次数),评测系统将返回: -1

如果收到 -1,请立即终止你的程序。

说明

  • 确保在每次打印后刷新输出。否则可能会导致超时(TLE)。
  • 如果你的程序产生无效输出或在交互过程中异常退出,评测系统的行为是未定义的。
  • 在打印最终答案或收到 -1 后,必须立即终止程序。否则可能导致未定义行为。
  • 避免在输出中包含不必要的换行符或空格,因为这些可能会被视为格式错误。

样例

输入格式 1

6

输出格式 1

? 3
0 1
1 1
3 1

说明

评测系统返回:

2
0
2

索引 0 和 2 处的序列字典序最小。

输入格式 2

? 2
0 3
3 3

输出格式 2

1
0

索引 0 处的序列字典序最小。

输入格式 3

! 1
0

说明

只有 $s = 0$ 使得序列 $A(s, N)$ 字典序最小,因此将其作为输出打印。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.