ちょっと発想が必要な問題。
問題概要
個の家が並んでいる。
個目の家は座標
にある。このすべての家にプレゼントを配る。
好きな場所から開始し好きな場所で終了することができるとき、最小の移動距離を求めよ。
制約
考えたこと
下の図のように、座標が最小の家から、座標が最大の家まで行けばよい(座標最大の家から最小の家まで行くのでもよい)。
よって、
- 座標の最大値:
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; }