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

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

AtCoder ABC 064 B - Traveling AtCoDeer Problem (7Q, 灰色, 200 点)

ちょっと発想が必要な問題。

問題概要

 N 個の家が並んでいる。 i 個目の家は座標  a_{i} にある。このすべての家にプレゼントを配る。

好きな場所から開始し好きな場所で終了することができるとき、最小の移動距離を求めよ。

制約

  •  1 \le N \le 100

考えたこと

下の図のように、座標が最小の家から、座標が最大の家まで行けばよい(座標最大の家から最小の家まで行くのでもよい)。

よって、

  • 座標の最大値:ma
  • 座標の最小値:mi

を求めて、ma - mi の値を答えればよい。

コード

#include <bits/stdc++.h>
using namespace std;
                                 
int main() {
    int N;
    cin >> N;
    vector<int> a(N);
    for (int i = 0; i < N; i++) cin >> a[i];

    int mi = 100000, ma = -1;
    for (int i = 0; i < N; i++) {
        mi = min(mi, a[i]);
        ma = max(ma, a[i]);
    }
    cout << ma - mi << endl;
}