WUPC2nd D - 5キューブ
問題
日本語なので本文参照(http://wupc2nd.contest.atcoder.jp/tasks/wupc_04)
制約条件
Ni≦10^9
方針
貪欲につめる。
5x5x5, 4x4x4のキューブはひとつしか入らない。
残りの隙間に1x1x1のキューブをできるだけ入れる。
3x3x3のキューブには、2x2x2のキューブが7個まで一緒に入るので、できるだけ一緒に入れる。
残りの隙間に1x1x1のキューブを入れる。
2x2x2のキューブは8個ずつセットにして入れる。
残りの隙間には1x1x1のキューブを入れる。
1x1x1のキューブは125個ずつセットにして入れる。
ソースコード
int cnt[6]; int main(){ rep(i, 5) cin >> cnt[i + 1]; ll ans = cnt[5]; //4 int k = cnt[4]; ans += k; cnt[1] = max(0ll, cnt[1] - k * (125 - 64ll)); //3 k = cnt[3]; ans += k; int l = min((ll)cnt[2], k * 7ll); cnt[2] -= l; cnt[1] = max(0ll, cnt[1] - (125ll * k - 27ll * k - 8ll * l)); //2 k = cnt[2] / 8; ans += k; cnt[1] = max(0ll, cnt[1] - k * (125ll - 64)); cnt[2] %= 8; if(cnt[2]){ ans++; cnt[1] = max(0ll, cnt[1] - (125 - 8ll * cnt[2])); } ans += (cnt[1] + 124) / 125; cout << ans << endl; return 0; }