AT_past202109_f 不完全順列
题目描述
给定一个长度为 $N$、仅由 `0` 和 `1` 组成的字符串 $S$,请你求出一个满足以下所有条件的长度为 $N$ 的数列 $P=(P_1,P_2,\dots,P_N)$。如果不存在这样的数列,请输出 `-1`。
- 数列 $P$ 是 $1,2,\dots,N$ 的一个排列,即 $P$ 是 $1,2,\dots,N$ 的一个重排。
- 对于所有 $1\le i\le N$,都满足以下条件:
- 如果 $S$ 的第 $i$ 个字符为 `1`,则 $P_i=i$。
- 如果 $S$ 的第 $i$ 个字符为 `0`,则 $P_i\neq i$。
输入格式
输入从标准输入中给出,格式如下:
> $N$ $S$
输出格式
如果不存在满足条件的数列 $P$,请输出 `-1`。
如果存在,输出数列 $P$ 的每一项,整数之间用空格分隔。
说明/提示
### 注意
本题在 2021/10/02 18:00 JST 之前禁止讨论。如果有相关讨论,可能会被要求赔偿。考试结束后可以公开总分和认证等级,但请不要透露解了哪些题等信息。
### 约束条件
- $1\le N\le 10^5$
- $S$ 仅由 `0` 和 `1` 组成。
### 样例解释 1
$S$ 的第 $1,3,5$ 个字符为 `1`,因此 $P_1=1,P_3=3,P_5=5$ 必须成立。$S$ 的第 $2,4$ 个字符为 `0`,因此 $P_2\neq 2,P_4\neq 4$ 必须成立。在本输入下,唯一满足条件的数列 $P$ 是 $(1,4,3,2,5)$。
### 样例解释 2
如果不存在满足条件的数列 $P$,请输出 `-1`。
### 样例解释 3
此外,以下输出也是正确答案之一。
```
2 1 3 4 5 9 7 8 10 12 11 6
```
由 ChatGPT 4.1 翻译