A7707. Reverse Permutation
编程题
普及-
知识点
题目描述
给你一个整数 $N$ 和一个长度为 $N$ 的字符串 $S$,其中只包含字符
有一个长度为 $N$ 的整数序列 $A=(A_1,A_2,\ldots,A_N)$。初始时,$A=(1,2,\ldots,N)$。
按 $k=1,2,\ldots,N$ 的顺序,对 $A$ 执行如下操作:
* 若 $S_k=$
* 若 $S_k=$
求所有操作执行完毕后的 $A$。
o 和 x。有一个长度为 $N$ 的整数序列 $A=(A_1,A_2,\ldots,A_N)$。初始时,$A=(1,2,\ldots,N)$。
按 $k=1,2,\ldots,N$ 的顺序,对 $A$ 执行如下操作:
* 若 $S_k=$
o,则将 $A$ 的前 $k$ 项翻转。具体而言,将 $A$ 替换为 $(A_k,A_{k-1},\ldots,A_1,A_{k+1},A_{k+2},\ldots,A_N)$。* 若 $S_k=$
x,则不进行任何操作。求所有操作执行完毕后的 $A$。
输入格式
输入从标准输入中以如下格式给出:
> $N$
> $S$
> $N$
> $S$
输出格式
输出所有操作完成后数组 $A$ 的各元素,元素之间用空格分隔。
输入输出样例
输入 #1
5 ooxoo
输出 #1
5 2 1 3 4
输入 #2
7 ooooooo
输出 #2
7 5 3 1 2 4 6
输入 #3
15 xooxoxoxoxoxxoo
输出 #3
15 11 10 7 6 3 1 2 4 5 8 9 12 13 14
说明/提示
**样例 1 解释:**
$A$ 在每次操作后变化如下:
* 当 $k=1$ 时:将 $A$ 的前 $1$ 项反转。$A$ 变为 $(1,2,3,4,5)$。
* 当 $k=2$ 时:将 $A$ 的前 $2$ 项反转。$A$ 变为 $(2,1,3,4,5)$。
* 当 $k=3$ 时:不执行任何操作。
* 当 $k=4$ 时:将 $A$ 的前 $4$ 项反转。$A$ 变为 $(4,3,1,2,5)$。
* 当 $k=5$ 时:将 $A$ 的前 $5$ 项反转。$A$ 变为 $(5,2,1,3,4)$。
所有操作完成后,$A = (5,2,1,3,4)$。
### 约束条件
* $2\le N\le 5\times 10^5$
* $N$ 是整数。
* $S$ 是一个长度为 $N$ 的字符串,仅由字符
$A$ 在每次操作后变化如下:
* 当 $k=1$ 时:将 $A$ 的前 $1$ 项反转。$A$ 变为 $(1,2,3,4,5)$。
* 当 $k=2$ 时:将 $A$ 的前 $2$ 项反转。$A$ 变为 $(2,1,3,4,5)$。
* 当 $k=3$ 时:不执行任何操作。
* 当 $k=4$ 时:将 $A$ 的前 $4$ 项反转。$A$ 变为 $(4,3,1,2,5)$。
* 当 $k=5$ 时:将 $A$ 的前 $5$ 项反转。$A$ 变为 $(5,2,1,3,4)$。
所有操作完成后,$A = (5,2,1,3,4)$。
### 约束条件
* $2\le N\le 5\times 10^5$
* $N$ 是整数。
* $S$ 是一个长度为 $N$ 的字符串,仅由字符
o 和 x 组成。