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

hamayanhamayan's blog

チーム分け [Kyoto University Programming Contest 2020 Spring A]

https://onlinejudge.u-aizu.ac.jp/beta/room.html#KUPC2020Spring/problems/A

解説

チームの組み合わせはC(4,2)/2通りしかないので、全通り試して実力差が最も小さいものを答えよう。 実装では、1234の順列を全列挙して、前半2人と後半2任でグループを作ることで全列挙する。 無駄に組み合わせを考えてしまうが、速度を犠牲にして実装を簡単化するのはよくやる。 (漏れも軽減できるしね)

int rate[4];
//---------------------------------------------------------------------------------------------------
void _main() {
    rep(i, 0, 4) cin >> rate[i];

    int ans = inf;
    sort(rate, rate + 4);
    do {
        int ab = rate[0] + rate[1];
        int cd = rate[2] + rate[3];
        chmin(ans, abs(ab - cd));
    } while (next_permutation(rate, rate + 4));

    cout << ans << endl;
}