提出AC
Submission #8507588 - AtCoder Regular Contest 069
int main() { cout <<setprecision(10); ll s , c ; cin >> s >> c; ll ans = 0; if(c < s * 2){ ans = c / 2; }else if(c < s * 2 + 4){//sをcにすることはできない ans = s; }else{ //cをsにしたほうがいい。c4でsccを一つ作れる ans = s; c -= s * 2; ans += c / 4; } cout << ans << endl; }
・解法
sccを1個作るには、s1個c2個、もしくはc4個で作ることが出来る。
sからcを作ることはできないのでまず、sに対応する個数以上cがあるかを見る
なければ c / 2が答え
次①
sに対応するだけ cはあるけど、それから先c4個からsccを作ることはできないなら
答えは s
その次②
c4でsccを作れるぜってとき
cからsに対応する個数 2 * s 個 引いた値を4で割った商だけ更にsccを作れる
ってやったけど
①②はまとめることが出来ますね
if(c < s * 2){ ans = c / 2; }else{ //cをsにしたほうがいい。c4でsccを一つ作れる ans = s; c -= s * 2; ans += c / 4; }