第17回情報オリンピック予選過去問2
JOI君はおじさんの家で双六を見つけた.双六は直線状に並んだ $ N+2 個のマスからなり,1番目のマスはスタート,$ N+2 番目のマスはゴールである.その他の各マスには 0 または 1 が書かれていて,各 $ i $ (1 \leqq i \leqq N) について,$ i+1 番目のマスに書かれた数字は $ A_i である.
双六では,最初にスタートのマスにコマを置き,サイコロを振って,出た目の数だけコマを進めることを繰り返す.ただし,1 の書かれたマスに止まった場合は,ゲームオーバーである.ゲームオーバーにならずにゴールのマスに止まるか,ゴールのマスを通り過ぎたら,ゲームクリアである.
JOI君は双六を遊ぶためのサイコロをおもちゃ屋さんに買いに行くことにした.おもちゃ屋さんには $ N+1 個のサイコロが売っている.$ j 番目 $ (1 \leqq j \leqq N+1) のサイコロは $ j 個の面を持ち,$ 1,2,\ldots,j が1つずつ書かれている.
JOI君はゲームクリアできるようなサイコロのうち,最も面の数が少ないサイコロを1個買うことにした.JOI君はどのサイコロを買えばよいだろうか.
制約
$ 1 \leqq N \leqq 100
$ 0 \leqq A_i \leqq 1 \quad (1 \leqq i \leqq N)
入力
入力は以下の形式で標準入力から与えられる.
$ N
$ A_1 \quad A_2 \quad \ldots \quad A_N
出力
JOI君が購入すべきサイコロの面の数を答えよ.
入力例 1
5
0 1 0 0 0
出力例 1
2
入力例 2
5
1 1 1 1 1
出力例 2
6
入力例 3
7
0 0 1 0 1 1 0
出力例 3
3
解答例
code:test.c
int main(void)
{
int n, a, c, m, i;
scanf("%d", &n);
c = 0;
m = 0;
for (i = 0; i < n; i++) {
scanf("%d", &a);
if (a == 0) {
c = 0;
} else {
c++;
if (c > m) {
m = c;
}
}
}
printf("%d\n", m + 1);
return 0;
}