P13296 [GCJ 2013 #2] Erdős–Szekeres

Description

Given a list $X$, consisting of the numbers $(1, 2, \ldots, N)$, an increasing subsequence is a subset of these numbers which appears in increasing order, and a decreasing subsequence is a subset of those numbers which appears in decreasing order. For example, $(5, 7, 8)$ is an increasing subsequence of $(4, 5, 3, 7, 6, 2, 8, 1)$. Nearly 80 years ago, two mathematicians, Paul Erdős and George Szekeres proved a famous result: $X$ is guaranteed to have either an increasing subsequence of length at least $\sqrt{N}$ or a decreasing subsequence of length of at least $\sqrt{N}$. For example, $(4, 5, 3, 7, 6, 2, 8, 1)$ has a decreasing subsequence of length 4: $(5, 3, 2, 1)$. I am teaching a combinatorics class, and I want to "prove" this theorem to my class by example. For every number $X[i]$ in the sequence, I will calculate two values: * $A[i]$: The length of the longest increasing subsequence of $X$ that includes $X[i]$ as its largest number. * $B[i]$: The length of the longest decreasing subsequence of $X$ that includes $X[i]$ as its largest number. The key part of my proof will be that the pair $(A[i], B[i])$ is different for every i, and this implies that either $A[i]$ or $B[i]$ must be at least $\sqrt{N}$ for some i. For the sequence listed above, here are all the values of $A[i]$ and $B[i]$: | $i$ | $X[i]$ | $A[i]$ | $B[i]$ | |:-:|:----:|:----:|:----:| | 0 | 4 | 1 | 4 | | 1 | 5 | 2 | 4 | | 2 | 3 | 1 | 3 | | 3 | 7 | 3 | 4 | | 4 | 6 | 3 | 3 | | 5 | 2 | 1 | 2 | | 6 | 8 | 4 | 2 | | 7 | 1 | 1 | 1 | I came up with a really interesting sequence to demonstrate this fact with, and I calculated $A[i]$ and $B[i]$ for every $i$, but then I forgot what my original sequence was. Given $A[i]$ and $B[i]$, can you help me reconstruct $X$? $X$ should consist of the numbers $(1, 2, \ldots, N)$ in some order, and if there are multiple sequences possible, you should choose the one that is lexicographically smallest. This means that $X[0]$ should be as small as possible, and if there are still multiple solutions, then $X[1]$ should be as small as possible, and so on.

Input Format

The first line of the input gives the number of test cases, $T$. $T$ test cases follow, each consisting of three lines. The first line of each test case contains a single integer $N$. The second line contains $N$ positive integers separated by spaces, representing $A[0], A[1], \dots, A[N-1]$. The third line also contains $N$ positive integers separated by spaces, representing $B[0], B[1], \dots, B[N-1]$.

Output Format

For each test case, output one line containing "Case #x: ", followed by $X[0], X[1], \dots X[N-1]$ in order, and separated by spaces.

Explanation/Hint

**Limits** * $1 \leq T \leq 30$. * It is guaranteed that there is at least one possible solution for $X$. **Small dataset (9 Pts, Test set 1 - Visible)** * $1 \leq N \leq 20$. **Large dataset (15 Pts, Test set 2 - Hidden)** * $1 \leq N \leq 2000$.