|
||||||||||
度度熊与整数集合Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 182 Accepted Submission(s): 37 Problem Description 度熊在用一个由最小的 $N$ 个正整数组成的集合 (也就是 $\{1,2,\ldots, N\}$) 和一个下标为 $1 \sim N$ 的数组 $a$ 玩游戏。 游戏开始时数组 $a$ 的所有数字都是 $0$,接着共有 $N-1$ 次操作,每次操作由以下步骤组成: 1. 选取一个元素个数大于 $1$ 的集合 $S$。 2. 对于 $S$ 中所有元素 $i$,都把 $a[i]$ 的值加 $1$。 3. 选取一个正整数 $x$,这个 $x$ 必须满足 $S$ 中小于等于 $x$ 的数的数量以及大于 $x$ 的数的数量都不为 $0$。 4. 把集合 $S$ 分成两个集合,第一个包含 $S$ 中所有小于等于 $x$ 的元素,第二个包含 $S$ 中所有大于 $x$ 的元素,产生出两个集合后,集合 $S$ 就消失了。 $N-1$ 次操作结束后就会产生出 $N$ 个集合,这 $N$ 个集合恰是对于所有 $i = 1 \sim N$,大小为 $1$ 且仅包含数字 $i$ 的集合。 游戏结束后,度熊忘记了 $N-1$ 次操作的过程,只知道操作完后 $a[1] \sim a[N]$ 的值,请根据这些值来还原操作,仅需依序输出第 $i$ 次操作所选的 $x$ 值即可。若有多组解,请输出字典序最小的解。 提示:我们称数组 $c_1,c_2,\ldots,c_n$ 字典序比数组 $d_1,d_2,\ldots,d_n$ 小,当且仅当存在某个 $i$ 满足对于所有$j < i$ 都有 $c_j = d_j$,且 $c_i < d_i$。 Input 有多组询问,第一行包含一个正整数 $T$ 代表有几组询问,接着每组测试数据占 $2$ 行,第一行包含一个正整数 $N$,第二行包含 $N$ 个正整数 $a[1], a[2], \ldots, a[N]$。 * $1 \le T \le 20000$ * $2 \le N \le 10^5$ * $1 \le a[i] \le N-1$ * 所有询问的 $N$ 的总和不超过 $3 \times 10^6$ Output 对对于每一个询问。若有可能还原操作,则输出两行,第一行包含一个字符串 "Possible",第二行包含 $N-1$ 个正整数,依序是第 $i$ 次操作所选的 $x$ 值 (若有多组可能,请输出字典序最小的); 若不可能还原,仅需输出一行包含一个字符串 "Impossible" (不包含引号)。 Sample Input
Sample Output
Source | ||||||||||
|