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

hamayanhamayan's blog

Ice Tea Store [AtCoder Grand Contest 019 A]

http://agc019.contest.atcoder.jp/tasks/agc019_a

解説

http://agc019.contest.atcoder.jp/submissions/1539073

2Lを1つよりも、1Lを2つ、0.5Lを4つ、0.25Lを8つのいずれかの方がお得かもしれない。
そのため、制約をそのうち一番お得なやつに変更しておく。
1Lと0.5Lも同様にお得なやつに変換する。
あとは、2Lのやつをなるべく買って、Nが奇数なら1Lを1つ買うと答え。

制約を最適なやつに変えて解くというのは、一般的には前処理として行われることが多い。

typedef long long ll;
int Q, H, S, D, N;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> Q >> H >> S >> D >> N;
 
    D = min(min(Q * 8, H * 4), min(D, S * 2));
    S = min(min(Q * 4, H * 2), S);
    H = min(Q * 2, H);
 
    ll ans = 1LL * N / 2 * D;
    if (N % 2) ans += S;
    cout << ans << endl;
}