kmjp's blog

競技プログラミング参加記です

Codeforces #294 Div2 C. A and B and Team Training

CF#294に参加。幸いなかなかの好調で良順位でした。
http://codeforces.com/contest/519/problem/C

問題

N人の熟練者とM人の初心者がいる。
3人チームを作る際、熟練者と初心者が1:2または2:1となるようにしたい。
最大何チーム作れるか。

解法

どちらの種類のチームを作るにしても、熟練者と初心者が1人ずつは必要。
あと1人は多い方から選べばよい。

別解としては、NとMが2倍以上離れていれば少ない方、2倍未満なら(N+M)/3と答えても良い。

ll N,M;
int ma;
void solve() {
	int i,j,k,l,r,x,y; string s;
	
	cin>>N>>M;
	
	while(N>0 && M>0) {
		if(N>=M) N--;
		else M--;
		N--;
		M--;
		if(N<0 || M<0) break;
		ma++;
	}
	
	cout<<ma<<endl;
}

まとめ

Div2 Cにしてはだいぶ簡単?