#P1090. Chain

Chain

描述

比特兰并非一直都是民主国家,其历史也有不光彩的一面。在一个美好的日子里,比特尔将军——统治比特兰的军政府指挥官——决定结束这场旷日持久的战争,并释放被囚禁的反对派活动人士。然而,他并不打算释放领袖比泰萨尔(Bytesar)。他决定用比特链(bytish chain)把比泰萨尔锁在墙上。这条链子由相互连接的环和固定在墙上的横杆组成。尽管这些环与横杆并未相连,但要把它们取下来却并非易事。

“将军,您为何把我锁在监狱的墙上,不让我享受自由的喜悦!” 比泰萨尔喊道。

“但是,比泰萨尔,你根本就没被锁住,我相信你有能力自己把环从横杆上取下来。” 比特尔将军背信弃义地回答道,接着又补充道,“不过,要在电子时钟敲响整点之前完成,晚上别出声,否则我就不得不叫电子警察了。”

快来帮帮比泰萨尔吧!我们将链子上的环依次编号为 1,2,,n1, 2, \cdots, n。可以按照以下规则来戴上或取下这些环:

  • 每次只能从横杆上戴上或取下一个环。
  • 编号为 11 的环可以随时从横杆上戴上或取下。
  • 若编号为 1,,k11, \cdots, k - 1(其中 1k<n1 \leq k < n)的环都已从横杆上取下,且编号为 kk 的环还在横杆上,那么就可以戴上或取下编号为 k+1k + 1 的环。

任务

编写一个程序,实现以下功能:

  • 从标准输入读取比特链的状态描述。
  • 计算将比特链上所有环从横杆上取下所需的最少操作步数。
  • 将计算结果输出到标准输出。

输入

输入的第一行包含一个整数 nn,其中 1n10001 \leq n \leq 1000。第二行包含 nn 个整数 o1,o2,,ono_1, o_2, \cdots, o_n(每个整数要么是 00 要么是 11),这些整数之间用单个空格分隔。若 oi=1o_i = 1,则表示第 ii 个环在横杆上;若 oi=0o_i = 0,则表示第 ii 个环已从横杆上取下。

输出

输出应仅包含一个整数,该整数表示将比特链上所有环从横杆上取下所需的最少操作步数。

输入数据 1

4
1 0 1 0

输出数据 1

6

来源

波兰信息学奥林匹克竞赛(POI)2001 年赛题