logo AlgoBeat OnlineJudge
登录 注册

#216794. [蓝桥杯 2026 国 B] 奇偶校验排列

内存限制:512 MiB 时间限制:2000 ms 标准输入输出
题目类型:VJudge(洛谷) 评测方式:VJudge
上传者: 匿名

题目描述

某个校验系统需要把 个编号各使用一次,排成一个长度为 的序列 。这样的序列称为一个排列。

系统会根据排列中相邻两个编号的差值奇偶性生成一个长度为 的校验串。对于每个 ,第 位校验字符 按如下规则确定:

  • 如果 为偶数,则
  • 如果 为奇数,则

现在给定一个长度为 的目标校验串 。你需要构造一个排列,使它生成的校验串 恰好等于

如果存在多个满足要求的排列,请输出字典序最小的一个。对于两个不同排列 ,若存在位置 ,使得前 个数都相同且 ,则称排列 的字典序小于排列

如果不存在满足要求的排列,请输出

输入格式

第一行包含一个整数 ,表示编号数量。

第二行包含一个长度为 的字符串 ,表示目标校验串,字符串仅由字符 组成。

输出格式

如果不存在满足要求的排列,输出一行一个整数

否则输出一行 个整数,表示字典序最小的合法排列。相邻两个整数之间用一个空格分隔。

样例

样例输入 1

5
1010

样例输出 1

1 2 4 3 5

样例输入 2

6
00000

样例输出 2

-1

样例输入 3

8
0101101

样例输出 3

1 3 2 4 5 6 8 7

数据范围与提示

【样例说明 1】

该排列对应的相邻差值依次为:

  • ,为奇数,对应
  • ,为偶数,对应
  • ,为奇数,对应
  • ,为偶数,对应

因此生成的校验串为 。在所有合法排列中, 的字典序最小。

【样例说明 2】

目标校验串的每一位都是 ,因此任意相邻两个编号的差值都必须为偶数,也就是它们奇偶性相同。这样所有位置上的编号都必须具有相同奇偶性,但 中既有奇数也有偶数,所以无解。

【样例说明 3】

输出排列生成的校验串依次为 ,与目标校验串 相同。

【评测用例规模与约定】

对于 的评测用例,

对于 的评测用例,

对于所有评测用例,,且 的长度为