草体にぼ日記

だらだらと

ARC069C SccPuzzle

C - Scc Puzzle

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