#P1090. Chain
Chain
描述
比特兰并非一直都是民主国家,其历史也有不光彩的一面。在一个美好的日子里,比特尔将军——统治比特兰的军政府指挥官——决定结束这场旷日持久的战争,并释放被囚禁的反对派活动人士。然而,他并不打算释放领袖比泰萨尔(Bytesar)。他决定用比特链(bytish chain)把比泰萨尔锁在墙上。这条链子由相互连接的环和固定在墙上的横杆组成。尽管这些环与横杆并未相连,但要把它们取下来却并非易事。
“将军,您为何把我锁在监狱的墙上,不让我享受自由的喜悦!” 比泰萨尔喊道。
“但是,比泰萨尔,你根本就没被锁住,我相信你有能力自己把环从横杆上取下来。” 比特尔将军背信弃义地回答道,接着又补充道,“不过,要在电子时钟敲响整点之前完成,晚上别出声,否则我就不得不叫电子警察了。”
快来帮帮比泰萨尔吧!我们将链子上的环依次编号为 。可以按照以下规则来戴上或取下这些环:
- 每次只能从横杆上戴上或取下一个环。
- 编号为 的环可以随时从横杆上戴上或取下。
- 若编号为 (其中 )的环都已从横杆上取下,且编号为 的环还在横杆上,那么就可以戴上或取下编号为 的环。
任务
编写一个程序,实现以下功能:
- 从标准输入读取比特链的状态描述。
- 计算将比特链上所有环从横杆上取下所需的最少操作步数。
- 将计算结果输出到标准输出。
输入
输入的第一行包含一个整数 ,其中 。第二行包含 个整数 (每个整数要么是 要么是 ),这些整数之间用单个空格分隔。若 ,则表示第 个环在横杆上;若 ,则表示第 个环已从横杆上取下。
输出
输出应仅包含一个整数,该整数表示将比特链上所有环从横杆上取下所需的最少操作步数。
输入数据 1
4
1 0 1 0
输出数据 1
6
来源
波兰信息学奥林匹克竞赛(POI)2001 年赛题