[EC Final 2022] Minimum Suffix

Luogu
IDLGP9719
Time3000ms
Memory1024MB
DifficultyP7
字符串2022O2优化ICPCLyndon 分解EC Final
For a string $s$ of length $n$, we define $p_j = x$ if $s[x\ldots j]$ is the minimum suffix of $s[1\ldots j]$, for all $j=1,\ldots, n$. (A suffix is the minimum suffix of a string if it is lexicographically smaller than any other suffix of that string.) You are to recover $s$ from $p_1,\ldots, p_n$. If there are multiple answers, find the lexicographically smallest one. ## Input The first line contains a single integer $T$ ($1\le T\le 10^5$) representing the number of test cases. For each test case, the first line contains a single integer $n$ ($1\le n\le 3\times 10^6$) representing the length of $s$. The next line contains $n$ integers $p_1,\ldots, p_n$ ($1\le p_i\le i$ for all $1\le i\le n$). It is guaranteed that the sum of $n$ over all test cases does not exceed $3\times 10^6$. ## Output For each test case, output one line. If there is no solution, output $-1$. Otherwise, output the lexicographically smallest $s$. Characters of $s$ are represented by positive integers. Smaller integers represent smaller characters in the lexicographical order. [samples] ## Note As the input/output can be huge, it is recommended to use fast input/output methods.
Samples
Input #1
6
3
1 1 1
3
1 1 2
3
1 1 3
3
1 2 1
3
1 2 2
3
1 2 3
Output #1
1 2 2
-1
1 2 1
1 1 2
2 1 2
1 1 1
API Response (JSON)
{
  "problem": {
    "name": "[EC Final 2022] Minimum Suffix",
    "description": {
      "content": "For a string $s$ of length $n$, we define $p_j = x$ if $s[x\\ldots j]$ is the minimum suffix of $s[1\\ldots j]$, for all $j=1,\\ldots, n$. (A suffix is the minimum suffix of a string if it is lexicograph",
      "description_type": "Markdown"
    },
    "platform": "Luogu",
    "limit": {
      "time_limit": 3000,
      "memory_limit": 1048576
    },
    "difficulty": {
      "LuoguStyle": "P7"
    },
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "LGP9719"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "For a string $s$ of length $n$, we define $p_j = x$ if $s[x\\ldots j]$ is the minimum suffix of $s[1\\ldots j]$, for all $j=1,\\ldots, n$. (A suffix is the minimum suffix of a string if it is lexicograph...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments