#P9721. [EC Final 2022] Inversion

    ID: 9031 远端评测题 1000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>2022交互题Special JudgeO2优化ICPC

[EC Final 2022] Inversion

Description

这是一个交互式问题。

有一个隐藏的排列 p1,p2,,pnp_1, p_2, \dots, p_n,它是 {1,2,,n}\{1, 2, \dots, n\} 的一个排列。你需要通过询问 pl,,prp_l,\ldots, p_r 的逆序数的奇偶性来找到它。

你可以以 ? l r{?~l~r} 的格式进行查询,交互器将会返回 $\left( \sum_{l\leq i < j\leq r} [p_i > p_j]\right) \bmod 2$。当 pi>pjp_i > p_j 时,[pi>pj][p_i>p_j]11,否则为 00

Input Format

首先,你需要读取整数 nn (1n20001\le n\le 2000)。

在此之后,你可以进行不超过 4×1044 \times 10^4 次查询。要进行一次查询,输出 ``? l r{?~l~r}'' (1lrn1 \leq l \leq r \leq n) 在单独的一行上,然后你需要从标准输入读取响应。

为了给出答案,打印 ``! p1 p2  pn{!~p_1~p_2~\dots~p_n}'' 在单独的一行上。答案的输出不计入 4×1044 \times 10^4 次查询的限制。

在打印查询后,不要忘记输出换行并刷新输出。为此,在 C++ 中使用 fflush(stdout)\texttt{fflush(stdout)}cout.flush()\texttt{cout.flush()},在 Java 中使用 System.out.flush()\texttt{System.out.flush()},在 Pascal 中使用 flush(output)\texttt{flush(output)},在 Python 中使用 stdout.flush()\texttt{stdout.flush()}

保证排列是预先固定的。

3

0

0

1


? 1 2

? 1 3

? 2 3

! 2 3 1

Hint

题面翻译由 ChatGPT-4o 提供。