A - 碁石ならべ Editorial /

Time Limit: 1 sec / Memory Limit: 64 MiB

配点: 20

白と黒の碁石をテーブルの上にならべて遊ぶ.まずテーブルの左端に碁石を置く. 次に左から 2 番目の場所に碁石を置く.これを n 回繰り返して n 個の碁石を横一列にならべる.ただし,新しく i 番目の碁石を置く際には,次のルールに従ってテーブル上の碁石を置き換える.

  • i が奇数の場合: テーブルに置いてあった碁石は置き換えず,新しい碁石を左から i 番目に置く.
  • i が偶数の場合: 新しく左から i 番目に置く碁石の色とテーブル上の右端の碁石の色が同じ場合は,テーブル上の碁石は置き換えず,新しい碁石を左から i 番目に置く.そうでない場合,すなわち,新しく左から i 番目に置く碁石の色とテーブル上の右端の碁石の色が異なる場合は,まずテーブル上の右端の連続した同色の碁石を全て取り除き,i 番目の碁石と同色の碁石に置き換える.そしてテーブルの右端に i 番目の碁石を置く.

例えば,最初の 7 個の碁石を置いた時点で,

\gdef\W{\Large \kern-0.05em\raisebox{-0.05em}{○}\kern-0.05em}\gdef\B{\Large \kern-0.05em\raisebox{-0.05em}{●}\kern-0.05em}\W\W\B\B\W\W\W

となっていたとする.(\W は白の碁石を,\B は黒の碁石を表す.)

  • 8 番目の碁石が白(\W)の場合は,右端の碁石と同色なので,そのまま置く.したがって,テーブル上の碁石は \W\W\B\B\W\W\W\W となる.
  • 8 番目の碁石が黒(\B)の場合は,右端の碁石(\W)と色が異なるので,まずテーブルの右端にある 3 個の連続した白い碁石(\W)を取り除き,黒い碁石(\B)に置き換える.そして右端に 8 番目の碁石を置く.したがって,テーブル上の碁石は \W\W\B\B\B\B\B\B となる.

入力として置く碁石の順番が与えられたとき,n 個の碁石をならべ終わった後,テーブル上に置いてある白い碁石の個数を求めるプログラムを作成せよ.


入力

入力ファイルのファイル名は input.txt である. 1 行目には正整数 n (1 \leqq n \leqq 100000) が書かれている.2 行目以降の第 i + 1 行目 (1 \leqq i \leqq n) には,i 番目に置く碁石の色を表す整数 c_i が書かれており,c_i0 なら i 番目に置く碁石の色が白であることを,1 なら i 番目に置く碁石の色が黒であることを表す.

採点用データのうち, 配点の 50 %分については, n \leqq 10000 を満たす.

出力

出力ファイルのファイル名は output.txt である.

output.txt は,n 個の碁石をならべ終わった後にテーブル上に置いてある白い碁石の個数だけを含む 1 行からなる.


入力例 1

8
1
0
1
1
0
0
0
0

出力例 1

6

入力例 2

8
1
0
1
1
0
0
0
1

出力例 2

2

Source Name

JOI 2007/2008 本選 問題1