Codeforces #170 Div2 A "Circle Line"
問題
駅がN個ある。
各駅に番号が1からNまで振られている。
例えばNが4だったら
駅は1 - 2 - 3 - 4 - 1
と繋がっていて(山の手線みたいな感じ)
その距離が与えられている。
指定された駅A,Bの最短距離を求めよ。
つまり内回りがよいか、外回りが良いか
制約
3 <= 駅の数 <= 100
1 <= 各駅間の距離 <= 100
方針
間違わないように実装するだけ
ソースコード
int main() { istream& in = cin; const int MAX_N = 100; int dis[MAX_N]; int n, s, e; in >> n; for( int i = 0; i < n; i++ ){ in >> dis[i]; } in >> s >> e; s--; e--; int p = 0; for( int i = s; i != e; i++, i %=n ){ p += dis[i]; } int m = 0; for( int i = s; ; ){ if( i == 0 ){ i = n - 1; }else{ i--; } m += dis[i]; if( i == e ) break; } int res = min( p, m ); cout << res << endl; }