#L0339. 最多能走多少格子呢

最多能走多少格子呢

题目背景

Special for beginners, ^_^

题目描述

有 n 个格子排成一排,编号 1 到 n。

每个格子里有一只机器人,每只机器人有一个方向:

0 表示向左

1 表示向右

同时每个格子里还有一个整数 ai。

你从位置 1 开始移动,规则如下:

如果当前位置机器人的方向是 0,你向左移动 ai 步。

如果当前位置机器人的方向是 1,你向右移动 ai 步。

每次离开一个格子时,该格子的方向会 翻转(0 变 1,1 变 0)。

如果发生以下情况就停止:

走到了区间外(小于 1 或大于 n)

进入了某个格子 第二次

请输出 一共访问了多少个不同的格子。

输入格式

第一行输入一个整数 n。

第二行输入 n 个整数,表示机器人的方向:

d1 d2 ... dn

其中 di 为 0 或 1。

第三行输入 n 个整数:

a1 a2 ... an

数据范围:

1 ≤ n ≤ 2e5 1 ≤ ai ≤ 1e9 di ∈ {0,1}

输出格式

输出一个整数,表示访问过的不同格子数量。

样例

5
1 0 1 1 0
2 1 2 1 3
4

样例解释

初始在位置 1。

位置 1:方向为 1,向右走 2 步,到达 3,离开后方向翻转。

位置 3:方向为 1,向右走 2 步,到达 5,离开后方向翻转。

位置 5:方向为 0,向左走 3 步,到达 2,离开后方向翻转。

位置 2:方向为 0,向左走 1 步,到达 1,离开后方向翻转。

此时再次进入位置 1,而位置 1 已经访问过,因此停止。

访问过的格子为:

1 3 5 2

数量为:

4