WARush

SRMの結果とか、解けた問題のコードを書いていきます

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;
}