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

hamayanhamayan's blog

Same Integers [AtCoder Regular Contest 094 C]

https://beta.atcoder.jp/contests/arc094/tasks/arc094_a

解法

https://beta.atcoder.jp/contests/arc094/submissions/2323958

貪欲に合わせていく。
「+2の操作」では操作後の偶奇が一致する。
そのため、まずは全ての数の偶奇を合わせる必要がある。
これは「+1の操作」を多くても1回行うだけで良い。
最初にこの調整を行う。
あとは、最大の数に合わせるように+2をしていくと答え。

int v[3];
//---------------------------------------------------------------------------------------------------
void _main() {
    rep(i, 0, 3) cin >> v[i];
    
    int odd = 0, even = 0;
    rep(i, 0, 3) {
        if (v[i] % 2 == 0) even++;
        else odd++;
    }
 
    int ans = 0;
 
    // 調整
    if (odd == 2) {
        ans++;
        rep(i, 0, 3) if (v[i] % 2 == 1) v[i]++;
    } else if (even == 2) {
        ans++;
        rep(i, 0, 3) if (v[i] % 2 == 0) v[i]++;
    }
 
    int ma = max(v[0], max(v[1], v[2]));
    rep(i, 0, 3) ans += (ma - v[i]) / 2;
    cout << ans << endl;
}