けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 297 A - Double Click (7Q, 灰色, 100 点)

for 文で、隣接する要素も見ながら走査していく系の問題!

問題概要

高橋君は時刻 0 にパソコンを起動し、時刻  T_{1}, T_{2}, \dots, T_{N} にクリックをした。

 T_{i+1} - T_{i} \le D となるとき、クリック  i, i+1 はダブルクリックが成立したという。

ダブルクリックが最初に成立した時刻を求めよ。ただし、一度もダブルクリックが成立していないならば、-1 を出力せよ。

制約

  •  1 \le N \le 100
  •  1 \le T_{1} \lt T_{2} \lt \dots \lt T_{N} \le 10^{9}
  •  1 \le D \le 10^{9}

考えたこと

for 文を用いて、 i 番目の要素 T[i] を見ると同時に、その次の要素 T[i+1] にアクセスすることもできる。そうして、

T[i+1] - T[i] <= D

を満たすとき、T[i+1] を出力して、反復を終了すればよい。最後まで反復しても満たさなければ -1 を出力すればよい。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int N, D;
    cin >> N >> D;
    vector<int> T(N);
    for (int i = 0; i < N; i++) cin >> T[i];

    for (int i = 0; i + 1 < N; i++) {
        if (T[i + 1] - T[i] <= D) {
            cout << T[i + 1] << endl;
            return 0;
        }
    }
    cout << -1 << endl;
}