[AtCoder] ABC 160 C – Traveling Salesman around Lake
問題
方針
\( e_i \) を家 \( i \) と \( i + 1 \) との距離とすると、\( e_i = A_{i + 1} – A_i \) となります。ただし、\( e_N = K – A_N + A_1 \) とします。最短移動をするとき、\( e_i \) のどれかの移動は行わないので、\( e_i \) の最大値を \( v \) とすると、\( K – v \) が答えになります。
コード
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll K; int N; cin >> K >> N; ll A[N]; for (int i = 0; i < N; i++) { cin >> A[i]; } ll e[N]; for (int i = 0; i < N - 1; i++) { e[i] = A[i + 1] - A[i]; } e[N - 1] = K - A[N - 1] + A[0]; ll v = e[0]; for (ll i : e) { v = max(i, v); } cout << K - v << "\n"; return 0; }
ディスカッション
コメント一覧
まだ、コメントがありません