QOJ.ac

QOJ

Time Limit: 1.0 s Memory Limit: 512 MB Total points: 100 Communication

#8903. Mensagem secreta

Statistics

Este é um problema com duas execuções. Em cada teste, a sua solução será executada duas vezes.

Na aula de informática, Алеся e Борис estão estudando criptografia. Eles decidiram inventar o seu próprio método de criptografar mensagens.

Алеся escolhe $k$ inteiros distintos de $1$ a $n$ e denota o conjunto obtido por $T$. Алеся quer transmitir a Борис o conjunto $T$ como uma mensagem criptografada. Para isso, a partir do conjunto $T$, Алеся construirá e transmitirá a Борис outro conjunto $R$, também formado por inteiros de $1$ a $n$.

Eles não querem que o tamanho da mensagem mude após a criptografia, portanto $R$ também deve conter exatamente $k$ números. Além disso, acreditam que, se $T$ e $R$ tiverem pelo menos um elemento em comum, a sua criptografia não será suficientemente segura. Por isso, não pode existir um número que pertença tanto a $T$ quanto a $R$, ou seja, os conjuntos $T$ e $R$ devem ser disjuntos. É garantido que $k\le n/2$, portanto sempre é possível construir pelo menos um conjunto $R$ a partir do conjunto $T$.

Quando Борис receber a mensagem criptografada $R$, deverá descriptografá-la e obter a mensagem original $T$.

Ajude Алеся e Борис a criar e implementar algoritmos de criptografia e descriptografia. Na primeira execução, o seu programa desempenhará o papel de Алеся, e na segunda execução, o de Борис.

Entrada

A primeira linha da entrada contém um número $a$, igual a $1$ ou $2$: o número da execução do seu programa.

A segunda linha contém um número $m$, a quantidade de mensagens ($1\le m\le300\,000$) que o seu programa deve criptografar (na primeira execução) ou descriptografar (na segunda execução).

As próximas $2m$ linhas contêm as descrições de $m$ mensagens, com duas linhas por mensagem.

A primeira linha de cada mensagem contém dois inteiros $n_i$ e $k_i$ ($2\le n_i\le10^9$, $1\le k_i\le300\,000$, $k_i\le\frac{n_i}{2}$). A segunda linha contém $k_i$ inteiros distintos de $1$ a $n_i$, em ordem crescente.

É garantido que a soma de todos os valores de $k_i$ em um teste não excede $300\,000$.

Se $a=1$, os números fornecidos constituem a mensagem original. Se $a=2$, os números fornecidos são o resultado produzido pelo seu programa ao criptografar alguma mensagem na primeira execução.

Saída

O programa deve imprimir $m$ linhas. A linha $i$ deve conter $k_i$ inteiros distintos de $1$ a $n_i$, em ordem crescente.

Na primeira execução, para cada mensagem original $T_i$, o programa deve imprimir o conjunto $R_i$, que deve ser disjunto de $T_i$.

Na segunda execução, para cada mensagem criptografada $R_i$, o programa deve recuperar a mensagem original $T_i$.

Exemplos

Primeira execução

Entrada 1

1
2
2 1
1
5 2
1 4

Saída 1

2
2 3

Segunda execução

Entrada 2

2
2
5 2
2 3
2 1
2

Saída 2

1 4
1

Nota

Observe que o exemplo mostra escolhas específicas para a saída na primeira execução e para a entrada na segunda execução. Se o seu programa imprimir outro conjunto $R$, a entrada na segunda execução também será diferente.

Além disso, na segunda execução, as mensagens criptografadas não são necessariamente fornecidas ao programa do participante na mesma ordem em que apareciam na primeira execução.

Subtarefas

Para indicar restrições adicionais sobre a entrada, denotaremos a sequência de números que define o conjunto $T_i$ por $t_1,t_2,\ldots,t_{k_i}$. Eles estão em ordem crescente.

Denotaremos a soma de $n_i$ em um teste por $N$.

Denotaremos a soma de $k_i$ em um teste por $K$.

Subtarefa Pontos Restrições adicionais sobre $n_i,N$ Restrições adicionais sobre $k_i,K$ Restrições adicionais sobre $t_j$ Subtarefas necessárias Informação sobre a avaliação
1 9 $N\le5\,000$ $k_i=1$ Primeiro erro
2 11 $N\le5\,000$ $k_i=2$ Primeiro erro
3 9 $N\le300\,000$ $k_i=\frac{n_i}{2}$ Primeiro erro
4 7 $n_i\le7$, $N\le5\,000$ Exemplos Primeiro erro
5 9 $t_{j+1}-t_j\ge2$, $t_{k_i}\le n_i-1$ Primeiro erro
6 9 $t_{k_i}-t_1\le\frac{n_i}{2}-1$ Primeiro erro
7 10 $N \le 5000$ $t_{k_i}\le n_i-k_i$ Primeiro erro
8 12 $N\le100$ Exemplos Primeiro erro
9 3 $N\le5\,000$ Exemplos, 1–2, 4, 7–8 Primeiro erro
10 7 $N \le 300\,000$ Exemplos, 1–4, 7–9 Primeiro erro
11 7 $K\le5\,000$ Exemplos, 1–2, 4, 7–9 Primeiro erro
12 7 Sem restrições adicionais Exemplos, 1–11 Primeiro erro

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.