CF1531E1 Сортировка слиянием
题目描述
考虑以下 Python 代码实现的归并排序:
```
```
def sort(a):
n = len(a)
b = [0 for i in range(n)]
log = []
def mergeSort(l, r):
if r - l > 1
mergeSort(l, m)
mergeSort(m, r)
i, j, k = l, m, l
while i < m and j < r:
if a[i] < a[j]:
log.append('0')
b[k] = a[i]
i += 1
else:
log.append('1')
b[k] = a[j]
j += 1
k += 1
while i < m:
b[k] = a[i]
i += 1
k += 1
while j < r:
b[k] = a[j]
j += 1
k += 1
for p in range(l, r):
a[p] = b[p]
mergeSort(0, n)
return "".join(log)
```
```
这段代码中使用了日志记录,这对于开发者来说是一个非常重要的工具。VK 的高级开发者瓦西里曾经生成了一个排列 $a$(这是一个包含从 $1$ 到 $n$ 的 $n$ 个不同整数的数组),并将它传入 `sort` 函数,得到一个输出字符串 $s$。不幸的是,第二天他只找到了这个字符串 $s$,而原始排列 $a$ 已经丢失。
瓦西里想要恢复一个排列 $a$,使得调用 `sort` 函数后能产生相同的字符串 $s$。请帮助他实现这一目标!
输入格式
输入是一个包含字符 '0' 和 '1' 的非空字符串 $s$。
在本题中,每个测试用例都有一个长度为 $16$ 的排列能够满足要求。然而,你可以输出任意长度的排列,只要满足条件即可。
输出格式
在第一行输出一个整数 $n$,表示排列的长度。
在第二行输出 $n$ 个互不相同的整数 $a_0, a_1, \ldots, a_{n-1}$,其中 $1 \le a_i \le n$ 表示排列的元素。
如果有多个满足条件的答案,输出任意一个即可。
**本翻译由 AI 自动生成**