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

hamayanhamayan's blog

Christmas Eve [AtCoder Beginner Contest 115 C]

https://beta.atcoder.jp/contests/abc115/tasks/abc115_c

解説

https://beta.atcoder.jp/contests/abc115/submissions/3744746

パッと見ると割と難しい問題に見える。
今回は入力をソートしても解くのに問題無いので、ソートしておく。
困ったら全探索をまずは考えるのだが、hminを全探索することにする。
hminがi番目の要素であるとすると、最適なhmaxはi+K-1番目の要素になる。
なので、hminを固定するとhmaxが1つに決まる。
よって、hminを全探索して、hmax-hminの最小値を見ていけば良い。
以下の実装ではL=hminのindex, R=hmaxのindexで実装している。

int N, K, H[101010];
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> N >> K;
    rep(i, 0, N) cin >> H[i];
    sort(H, H + N);
 
    int ans = inf;
    rep(L, 0, N - K + 1) {
        int R = L + K - 1;
        chmin(ans, H[R] - H[L]);
    }
    cout << ans << endl;
}