UAPC 2011 D The Great Summer Contest
問題
三つの数a,b,cがあって、
- aから三つを取って一つの組を作る
- bから三つを取って一つの組を作る
- cから三つを取って一つの組を作る
- a,b,cから一つずつ取って一つの組を作る
ことができる。
組は最大で何個作れるか。
方針
貪欲にa,b,cから3つずつ取っていくと、
a=3,b=2,c=2のときに間違う。
a,b,cから一つずつ取るとり方は、3つ以上の場合は、
それぞれを3つずつ取る場合と同じなので考えなくてよい。よって一つずつ取るとり方を0〜2で試す。
ソースコード
int main(){ ll a,b,c,d,e,f; while(cin>>a>>b>>c>>d>>e>>f,a||b||c||d||e||f){ ll ans=0; a+=d; b+=e; c+=f; rep(i,min(min(a,10ll),min(b,c))+1){ ans=max(ans,(a-i)/3+(b-i)/3+(c-i)/3+i+ +min((a-i)%3,min((b-i)%3,(c-i)%3))); } cout<<ans<<endl; } return 0; }