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

hamayanhamayan's blog

Half and Half [AtCoder Regular Contest 096 C]

https://beta.atcoder.jp/contests/arc096/tasks/arc096_a

過程

1. 300点なので簡単に解く方針を探す
2. 何か全探索で買うのを考えると良さそうな所はないか
3. ABピザを全探索すると良さそう

解法

https://beta.atcoder.jp/contests/arc096/submissions/2388888

ABピザを買う枚数を全探索して解こう。
ABピザをab枚買ったとすると、
Aピザはab/2枚分、Bピザもab/2枚分作れるため、足りない場合は別途買うようにする。
オーバーフローするといけないので、long longでやっているが、intで大丈夫そう。

ll A, B, C, X, Y;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> A >> B >> C >> X >> Y;
    
    ll ans = infl;
    rep(ab, 0, 201010) {
        ll sm = C * ab;
 
        ll x = X - ab / 2;
        ll y = Y - ab / 2;
 
        if (0 < x) sm += x * A;
        if (0 < y) sm += y * B;
 
        chmin(ans, sm);
    }
 
    cout << ans << endl;
}