现有两个长为 n 的数组 a_1,a_2,\ldots,a_n 和 b_1,b_2,\ldots,b_n。保证 1\le a_i,b_i\le n。**注意下标从 1 开始。**
在 C++ 中,我们分别使用表达式 `a[i]` 和 `b[i]` 来表示 a_i 和 b_i,其中 i 是一个数字,表示下标。
如果我们接着在表达式两侧嵌套 `a[...]` 和 `b[...]`,我们就实现了数组嵌套,产生形如 `a[b[a[a[15]]]]` 的表达式。
给出数组 a,b 和一个数组嵌套形成的表达式,你需要计算这个表达式的值。
输入共四行。
第一行有一个正整数 n,表示数组 a,b 的长度。
第二行有 n 个正整数 a_1,\ldots,a_n。
第三行有 n 个正整数 b_1,\ldots,b_n。
最后一行有一个字符串,表示要计算的数组嵌套表达式。
输出一行一个正整数,表示答案。
4 2 4 1 3 1 2 4 3 a[a[b[4]]]
2
4 1 2 4 3 2 4 1 3 b[b[3]]
2
12 3 6 6 4 2 3 8 1 9 11 12 5 6 8 3 2 9 1 10 5 12 4 11 7 a[b[b[a[b[b[a[a[12]]]]]]]]
2
【样例 1 解释】
`b[4]` 是 3,因此 `a[b[4]]` 等于 `a[3]` 即 1,进而得出 `a[a[b[4]]]` 等于 `a[1]`,故输出 2。
用 m 表示数组嵌套层数,例如样例 1 中 m=3。
对于全部数据,保证 1\lt n,m\lt 10^5(十万),且表达式中数组不会越界。
- 特殊性质 A:表达式中的数字是一位数。
- 特殊性质 B:表达式中不会出现字符 `a`。
数据点:
1,2:特殊性质A,m=1;
3,4,5:特殊性质B,1 \lt n,m \lt 1000;
6,7,8,9,10:无特殊性质,1 \lt n,m \lt 10^5;
| 时间限制 | 1 秒 |
| 内存限制 | 128 MB |