はまやんはまやんはまやん

hamayanhamayan's blog

Nearest Minimums [Educational Codeforces Round 35 A]

http://codeforces.com/contest/911/problem/A

N個の配列Aがある。
この中には最小値が2つ以上入っている。
最小値の間の距離の最小値を答えよ。

解法

http://codeforces.com/contest/911/submission/33717689

最小値をまずさがす(変数mi)。
次に最小値がある要素の添字を集める(配列v)。
隣接する添字の差の最小値を求めると答え。

int N, A[101010];
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> N;
    rep(i, 0, N) cin >> A[i];

    int mi = A[0];
    rep(i, 0, N) mi = min(mi, A[i]);

    vector<int> v;
    rep(i, 0, N) if (A[i] == mi) v.push_back(i);

    int n = v.size();
    int ans = 10101010;
    rep(i, 0, n - 1) ans = min(ans, v[i + 1] - v[i]);
    cout << ans << endl;
}