QOJ.ac

QOJ

Limite de temps : 2 s Limite de mémoire : 1024 MB Points totaux : 100

#23871. Scalanie

Statistiques

Dany jest ciąg dodatnich liczb całkowitych $A=(A_1, A_2, \ldots, A_N)$ o długości $N$ oraz ciąg dodatnich liczb całkowitych $B=(B_1, B_2, \ldots, B_M)$ o długości $M$. Oba te ciągi są niemalejące. Oznacza to, że spełniają warunki $A_1 \le A_2 \le \cdots \le A_N$ oraz $B_1 \le B_2 \le \cdots \le B_M$.

Za pomocą poniższego algorytmu generujemy z tych ciągów ciąg dodatnich liczb całkowitych $C=(C_1, C_2, \ldots, C_{N+M})$ o długości $N+M$:

  1. Początkowo $C$ jest pusty.
  2. Jeśli zarówno $A$, jak i $B$ są puste, zakończ.
  3. Jeśli jeden z ciągów $A$ lub $B$ jest pusty, niech $t$ oznacza ciąg niepusty. Jeśli żaden z nich nie jest pusty, niech $t$ oznacza ciąg, którego pierwszy element jest mniejszy. Jeśli jednak pierwsze elementy ciągów $A$ i $B$ mają taką samą wartość, jako $t$ przyjmujemy $A$.
  4. Dopisz pierwszy element ciągu $t$ na koniec ciągu $C$.
  5. Usuń pierwszy element ciągu $t$.
  6. Wróć do kroku 2.

Mając dane niemalejące ciągi dodatnich liczb całkowitych $A$ oraz $B$, napisz program, który wypisze ciąg dodatnich liczb całkowitych $C$ wygenerowany przez ten algorytm.

Wejście

Wejście podawane jest ze standardowego wejścia w następującym formacie:

$$ \begin{aligned} &N \ M \\ &A_1 \ A_2 \ \cdots \ A_N \\ &B_1 \ B_2 \ \cdots \ B_M \end{aligned} $$

Wyjście

Wypisz $N + M$ wierszy na standardowe wyjście. W $k$-tym wierszu ($1 \le k \le N + M$) wypisz $C_k$.

Ograniczenia

  • $1 \le N \le 500$.
  • $1 \le M \le 500$.
  • $1 \le A_1 \le A_2 \le \cdots \le A_N \le 2000$.
  • $1 \le B_1 \le B_2 \le \cdots \le B_M \le 2000$.

Przykład

Wejście 1

2 1
1 2
2

Wyjście 1

1
2
2

Uwaga 1

Przed wykonaniem algorytmu mamy $A=(1,2), B=(2)$. Ciąg $C$ jest generowany w następujący sposób:

  • Ponieważ pierwszym elementem ciągu $A$ jest $1$, a pierwszym elementem ciągu $B$ jest $2$, dopisujemy pierwszy element ciągu $A$ do ciągu $C$ i usuwamy go z ciągu $A$.
  • Ponieważ pierwszym elementem ciągu $A$ jest $2$, a pierwszym elementem ciągu $B$ jest $2$, dopisujemy pierwszy element ciągu $A$ do ciągu $C$ i usuwamy go z ciągu $A$.
  • Ponieważ ciąg $A$ jest pusty, dopisujemy pierwszy element ciągu $B$ do ciągu $C$ i usuwamy go z ciągu $B$.
  • Ponieważ zarówno ciąg $A$, jak i ciąg $B$ są puste, kończymy działanie algorytmu.

Po zakończeniu algorytmu ciąg ma postać $C=(1,2,2)$.

Wejście 2

3 8
1 3 8
3 3 4 5 6 7 8 9

Wyjście 2

1
3
3
3
4
5
6
7
8
8
9

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.