#P1501. 拯救(save)

拯救(save)

问题描述

正义之士被恶魔抓了,被关在小黑屋里,无法继续他的正义事业,你决定去拯救他。关正义之士的小黑屋迅速被你打开,可是正义之士却被恶魔用一把锁给锁住了。这把锁包含了N个小锁。只有打开前K-2个锁,且锁上第K-1个锁,才能改变第K个锁的状态(打开或锁上该锁),第1个锁可以任意改变状态,当第1个锁锁上时第2个锁就可以改变状态。

为了知道你到底是要留下来开锁,还是“走为上”,你需要知道到底需要多少次操作才能开锁(打开或锁上一把锁算一次操作,只有当N个小锁全部都被打开才算开了锁)。

输入save.in

输入文件save.in第一行为一个N(小锁的个数,1≤N≤1000)

第二行为n个整数a1,a2,…,an(每个都是0或者1),中间用单个空格隔开。如果是ai=1,表示第i个锁是锁着的,反之表示该锁已被打开。

输出save.out

输出文件save.out包括一个数,表示最少要操作的次数。

样例输入

4
1 0 1 0

样例输出

6

样例说明

1010->1110->0110->0100->1100->1000->0000

对于40%的数据,有N≤30;

对于100%的数据,有N≤1000。