#P1396. 2023.07.20-OPPO算法-第二题-排列还原

2023.07.20-OPPO算法-第二题-排列还原

题目描述

塔子哥有一天翻出来一个旧手机,但是塔子哥早已忘记这个手机的密码。

他只知道密码是一个排列,但他现在忘了具体密码是什么。于是他打开了密保:密保是一串01串,表示这个排列的前 ii 项和的奇偶性了。现在,塔子哥希望你能帮他还原出一个可能的密码。

排列的定义: 长度为 nn 的数组, 11nn 都只出现了一次。

输入描述

输入第一行一个正整数 nn ,代表排列的大小。 输入第二行为一个长度为 nn 的01串, 第 ii 个字符为'1'代表排列的前i项和为奇数,'0'代表前 ii 项和为偶数。

输出描述

如果无解, 请输出 1-1 。 否则输出一个合法的排列。有多解时输出任意即可。

样例

样例输入

5
01011

样例输出

4 5 3 1 2

说明

前一项之和是4, 为偶数。前两项之和为9, 为奇数。前三项之和为12,为偶数。前四项之和为13, 为奇数。前两项之和为15, 为奇数。

符合要求。

输出[2,5,1,3,4]这个数组也是可以通过本样例的。