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; }