【MX-X4-T1】「Jason-1」IO++

题目描述

有一类只有输入语句与输出语句的程序,我们用一个非负整数序列 $[a_1, a_2, \ldots]$ 描述它。 该程序将从前往后依次执行,对于第 $i$ 个元素 $a_i$: - 若 $a_i = 0$,表示一条输入语句: - 程序将从输入中读取一个整数。 - 否则,表示一条输出语句: - 程序将输出第 $a_i$ 次输入读取到的整数。 - 对于给出的程序,保证执行本语句前,程序至少进行了 $a_i$ 次输入。对于你编写的程序,你同样需要保证这一点。 特别地,一个长度为 $0$ 的空程序也是合法的。 给定一个长度为 $n$ 的程序 $[b_1, \ldots, b_n]$,你需要求出能够实现相同的功能的程序所需的最短长度。 两个程序能实现相同功能,当且仅当对于任意的长度为 $10^{10^{10}}$、值为 $[1, 10^{10^{10}}]$ 之内整数的输入,两个程序执行的输出语句次数相同,且每一次输出的结果均一致。

输入输出格式

输入格式


第一行,一个正整数 $n$,表示程序的长度。 第二行,$n$ 个非负整数 $b_1, \ldots, b_n$,描述了一个程序。

输出格式


仅一行一个整数,表示要实现相同功能的程序所需要的最小长度。

输入输出样例

输入样例 #1

5
0 0 0 1 2

输出样例 #1

4

输入样例 #2

7
0 0 1 0 3 1 3

输出样例 #2

7

输入样例 #3

7
0 1 0 0 2 1 0

输出样例 #3

5

输入样例 #4

4
0 0 0 0

输出样例 #4

0

说明

**【样例解释 #1】** 长度为 $4$ 的程序 $[0,0,1,2]$,$[0,1,0,2]$ 均可以实现相同的功能。可以证明不存在长度 $\leq 3$ 且实现了相同功能的程序,所以答案为 $4$。 - 对于输入 $[2, 3, 4, \ldots]$,程序 $[0, 0, 0, 1, 2]$ 和 $[0, 0, 1, 2]$ 和 $[0, 1, 0, 2]$ 的输出均为 $[2, 3]$,符合题意。 - 可以验证,对于任意的长度为 $10^{10^{10}}$、值为 $[1, 10^{10^{10}}]$ 之内整数的输入,两个程序执行的输出语句次数相同,且每一次输出的结果均一致。 但是,程序 $[0,1,1]$ 无法实现相同的功能,因为对于输入 $[2, 3, 4, \ldots]$,该程序的输出为 $[2, 2]$,与原程序的 $[2, 3]$ 不相同,故不能实现相同功能。 程序 $[0,1,2]$ 是不合法的程序,因为运行第 $3$ 条指令(即一条输出语句 $a_i = 2$)时,只执行了 $1$ 次输入语句。 **【样例解释 #2】** 不存在更短的程序能实现相同功能。 **【样例解释 #3】** 长度为 $5$ 的程序 $[0,1,0,2,1]$ 可以实现相同功能。 **【样例解释 #4】** 由于没有输出语句,因此长度为 $0$ 的空程序即可实现相同功能。 **【数据范围】** 对于 $50\%$ 的数据,保证 $b_1, \ldots, b_n$ 非严格单调递增,即对于任意 $2 \le i \le n$ 均有 $b_{i-1} \le b_i$。 对于 $100\%$ 的数据,$1 \le n \le 10^5$,$0 \le b_i \le n$,且保证执行任何输出语句 $b_i$ 前,程序至少进行了 $b_i$ 次输入。