二分探索ドリルのサムネイル
最初の 1 の位置 COBOL(Beta)編(paizaランク B 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

マラソン大会に向けて、N 日間練習に取り組みました。練習の記録は整数列 A_1, A_2, ..., A_N として与えられ、目標タイムを達成できなかった日の A_i は 0、達成できた日の A_i は 1 です。この記録は 0 が先、1 が後に並んでいます(つまり、一度目標タイムを達成すると、それ以降は毎日達成し続けています)。

初めて目標タイムを達成した日(先頭を 1 日目とする)を二分探索で求め、出力してください。一度も達成できなかった場合は N + 1 を出力してください。

入力される値

入力は以下のフォーマットで与えられます。

N
A_1 A_2 ... A_N


・1 行目には整数 N が与えられます。

・2 行目には N 個の整数 A_1, A_2, ..., A_N が空白区切りで与えられます。各 A_i は 0 または 1 で、0 が先、1 が後に並んでいます。

・入力は合計で 2 行からなり、入力値最終行の末尾に改行が 1 つ入ります。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

初めて目標タイムを達成した日(先頭を 1 日目とする)を 1 行に出力してください。一度も達成できなかった場合は N + 1 を出力してください。出力の最後は改行し、余計な文字、空行を含んではいけません。

条件

すべてのテストケースにおいて、以下の条件をみたします。

・1 ≦ N ≦ 10000

・A_i は 0 または 1

・A は 0 が先、1 が後に並んでいる(一度 1 になったら、それ以降はすべて 1 である)

入力例1

6
0 0 0 1 1 1

出力例1

4

入力例2

5
0 0 0 0 0

出力例2

6

問題一覧へ戻る

  1. paizaトップ
  2. レベルアップ問題集
  3. 二分探索ドリル(言語選択)
  4. 問題一覧 COBOL(Beta)編
  5. 最初の 1 の位置 COBOL(Beta)編
ページの先頭へ戻る