QOJ.ac

QOJ

実行時間制限: 4 s メモリ制限: 512 MB 満点: 100 難易度: [表示] インタラクティブ

#1815. Juez perezoso

統計

Este es un problema interactivo.

Los jueces están trabajando en la estrategia para el programa del jurado para la versión modificada del problema J del concurso actual.

En ese problema, Alice inventa secretamente una permutación de los primeros $N$ enteros $a_1, a_2, \dots, a_N$ y le dice $N$ a Bob. Bob hace algunas preguntas para identificar esta permutación. Alice puede cambiar la permutación en el proceso siempre y cuando sea consistente con sus respuestas anteriores.

Los jueces planean crear un AliceBot que haga lo siguiente. Hay dos fases: la fase de preguntas y la fase de respuesta.

En la fase de preguntas, el juez le dice a AliceBot un entero $N$. Luego, AliceBot debe responder algunas preguntas que el juez hace sobre la permutación.

En la fase de respuesta posterior, AliceBot debe componer dos permutaciones diferentes $a_1, \dots, a_N$ y $b_1, \dots, b_N$ que sean consistentes con las respuestas de la fase anterior.

El juez que hace las preguntas tiene una paciencia inicial $P = 2N$. Cada vez que el juez hace una pregunta, su paciencia disminuye.

Hay tres tipos de preguntas que el juez puede hacer:

  • Tipo 1, con formato “? 1 i j k”: el juez elige tres enteros diferentes $i, j, k$ ($1 \le i, j, k \le N$), AliceBot observa los tres enteros $a_i, a_j$ y $a_k$, y le dice a Bob el valor de su mediana (el que no es ni el mínimo ni el máximo). Cada pregunta de este tipo disminuye la paciencia del juez en 2.
  • Tipo 2, con formato “? 2 i j”: el juez elige dos enteros diferentes $i, j$ ($1 \le i, j \le N$), y AliceBot responde $i$ si $a_i < a_j$, o $j$ en caso contrario. Cada pregunta de este tipo disminuye la paciencia del juez en 2.
  • Tipo 3, con formato “? 3 i j”: el juez elige dos enteros diferentes $i, j$ ($1 \le i, j \le N$), y AliceBot dice el valor mínimo entre $a_i$ y $a_j$. Cada pregunta de este tipo disminuye la paciencia del juez en 1.

Puedes asumir que la paciencia del juez nunca bajará de 2 después de hacer una pregunta. Cuando el juez decide que ha hecho suficientes preguntas, se envía el comando “!” al AliceBot, cambiando a la fase de respuesta.

En la fase de respuesta, AliceBot le dice al juez dos permutaciones $a_1, \dots, a_N$ y $b_1, \dots, b_N$. Estas dos permutaciones deben ser consistentes con todas las respuestas dadas en la fase de preguntas, y el número de posiciones $i$ tales que $a_i \neq b_i$ debe ser al menos $\lceil p/2 \rceil$, donde $p$ es la paciencia del juez al final de la fase de preguntas.

Debido a que el juez es demasiado perezoso, se te pide implementar el AliceBot. Se puede demostrar que el problema es resoluble para cada $N$ posible dentro de las restricciones.

Interacción

Primero, el programa del jurado te dice un entero $N$ en una línea separada ($4 \le N \le 50\,000$).

Luego, el jurado hace preguntas.

Una pregunta de tipo 1 es una línea con el formato “? 1 i j k” ($1 \le i, j, k \le N$; $i, j$ y $k$ son distintos entre sí). Luego imprimes una línea con un solo entero: la mediana de los valores $a_i, a_j$ y $a_k$.

Una pregunta de tipo 2 es una línea con el formato “? 2 i j” ($1 \le i, j \le N$; $i \neq j$). Luego imprimes una línea con un solo entero: $i$ si $a_i < a_j$, o $j$ si $a_i > a_j$.

Una pregunta de tipo 3 es una línea con el formato “? 3 i j” ($1 \le i, j \le N$; $i \neq j$). Luego imprimes una línea con un solo entero: el valor mínimo entre $a_i$ y $a_j$.

Sea $q_1$ el total de preguntas de tipo 1, $q_2$ el total de preguntas de tipo 2 y $q_3$ el total de preguntas de tipo 3. Puedes asumir que el valor $p = 2N - 2q_1 - 2q_2 - q_3$ no es menor que 2.

Para cambiar a la fase de respuesta, el programa del jurado emite una línea que consiste en el signo ‘!’. Después de eso, debes imprimir dos líneas: la primera línea contiene $N$ enteros separados por espacios $a_1, \dots, a_N$, y la segunda línea contiene $N$ enteros separados por espacios $b_1, \dots, b_N$. Cada una de estas dos secuencias debe ser una permutación de $1, \dots, N$, y deben diferir en al menos $\lceil p/2 \rceil$ posiciones.

No olvides imprimir el carácter de nueva línea y vaciar el búfer de salida después de imprimir las respuestas y después de imprimir cada permutación; de lo contrario, podrías obtener el error “Idleness Limit Exceeded”.

Ejemplos

Entrada 1

5
? 1 1 2 3
? 2 2 4
? 3 4 5
!

Salida 1

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

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#567Editorial Open集训队作业 解题报告 by 殷骏Qingyu2026-01-02 22:25:29 Download

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.