Official

B - 最初のアラート / First Alert Editorial by MMNMM


この問題では、\(N\) 個の整数を読み込み、順に大小関係を判定する必要があります。

\(P _ i\gt K\) を満たす \(i\) のうち、(存在するなら)その中で最小のものを求める必要があります。 このような処理は「先頭から \(P _ i\) を確認し、条件を満たしたらその時点で繰り返しを終了する」ような実装を行うとシンプルになることが多いです。

実装例は以下のようになります。

#include <iostream>
using namespace std;

int main(){
    int N, K;
    cin >> N >> K;

    for (int i = 1; i <= N; ++i) {
        int A;
        cin >> A; // 順に読み込んで
        if (A >= K) { // K 以上なら
            cout << i << endl; // 出力して
            return 0; // 終了
        }
    }
    
    // 見つからなければ
    cout << -1 << endl; // -1 を出力して
    return 0; // 終了
}
N, K = map(int, input().split())
A = list(map(int, input().split()))

for i, a in enumerate(A): # A を順に見て
    if a >= K: # K 以上なら
        print(i + 1) # 答えを出力して
        break # ループ終了
else: # 見つからなければ
    print(-1) # -1 を出力する

posted:
last update: