第一行输入一个整数
表示字符串及排列的长度。
第二行输入一个长度为
,仅由
和
构成的字符串
。
如果不存在满足条件的排列,直接输出
;否则,在一行上输出
个整数
表示你构造出的排列。
如果存在多个满足条件的排列,输出任意一个均可,系统将自动判定其正确性。请注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
3 001
3 1 2
对于这个样例,
由于
,排列的前一项元素无法构成一个排列;
由于
,排列的前两项元素无法构成一个排列;
由于
,排列的前三项元素构成一个排列;
同时,输出
、
等答案也都是合法的。
4 1110
-1
在此样例中,若存在合法排列,则前三位必须依次形成排列,但第四位又要求整体不形成排列,显然不可能,因此答案为。
import sys
n=int(input())
s=list(map(int,input()))
if s[-1]==0:
print("-1")
sys.exit()
num_list=[i for i in range(1,n+1)]
output_list=[0 for i in range(1,n+1)]
count=0
for idx,flag in enumerate(s):
if flag==1 and idx==0:
output_list[0]=1
elif idx>=1 and flag==1 and s[idx-1]==1:
output_list[idx]=idx+1
elif flag==0:
count+=1
elif flag==1 and count>0:
output_list[idx-count:idx]=[i for i in range(idx+1,idx-count,-1)]
count=0
print(' '.join(map(str,output_list[:n]))) n = int(input())
s = input()
ls = [i for i in range(1,n+1)]
i = 0
flag = True
if s[-1] == '0':
flag = False
while i<n and flag:
if s[i] == '0':
nex = s.find('1',i)
if nex==None:
flag = False
break
tmp = ls[i]
ls[i] = ls[nex]
ls[nex] = tmp
i = nex
continue
i += 1
if flag:
for x in ls:
print(x,end=' ')
else:
print(-1)