#237. [Sleeping Cup #10] Signal Traversal

[Sleeping Cup #10] Signal Traversal

注意

本题需要使用文件读写(traversal.in / traversal.out)。

题目背景

Sleeping Jellyfish 特别喜欢玩 Minecraft,当他成为 1414 年老玩家时,他发现:红石挺有趣的。于是,他一边看视频一边实操,终于在一个下午学会了所有的红石元件的使用方法。

题目描述

在 Minecraft 游戏中,红石线路是一种重要的信号传输系统。

现在,我们有一棵由 nn 个红石元件组成的完全二叉树,其中 11 号结点为根,ii 号结点的两个儿子(如果有的话)分别是 2i2i 号结点和 2i+12i+1 号结点。

游戏中共有 88 种不同的元件,编号分别为 0,1,,70, 1, \ldots, 7,其中 ii 号结点上的元件编号为 aia_i

你被要求扮演一个红石信号,手里握着一个初始值为 1515 的变量 xx(红石信号强度),从 11 号结点出发:

  1. 如果 x=0x = 0ai=0a_i = 0,你结束扮演。
  2. 你得到 11 分。
  3. 根据当前所在的结点的元件改变 xx 值,具体规则见下表。
  4. 如果你位于二叉树的某个叶子结点,你结束扮演。
  5. 你前往当前结点的某个儿子,然后回到第 11 步重新执行本流程,直至扮演结束。

问扮演结束时你的最大得分是多少?

元件编号 规则
00 空气:将 xx 赋值为 00
11 开关:将 xx 赋值为 1515
22 红石块:将 xx 赋值为 1515
33 红石粉:将 xx 减少 11
44 红石中继器(1):将 xx 先增加 00,再减少 11
55 红石中继器(2):将 xx 先增加 11,再减少 11
66 红石中继器(3):将 xx 先增加 22,再减少 11
77 红石中继器(4):将 xx 先增加 44,再减少 11

输入格式

第一行一个正整数 n (1n105)n\ (1 \le n \le 10^5)

第二行 nn 个非负整数 a1,a2,,an (0ai7)a_1, a_2, \ldots, a_n\ (0 \le a_i \le 7)

数据保证当且仅当 i=1i = 1 时有 ai=1a_i = 1

输出格式

一行一个非负整数表示你的最大得分。

样例

15
1 3 2 5 7 4 0 3 4 0 2 5 6 0 4
4