Codeforces Round #311 (Div.2)
はい。
http://codeforces.com/contest/557
A. Ilya and Diplomas
ざっくりと大意
・2から4行目のmin,maxの範囲の数の和でnをつくる。複数の方法がある場合は上の行の数を大きくすることを優先する??
方針のようなもの
・最小値を見た後で2行目から増やしていく。
n=int(raw_input()) l,ans=[],[] for i in range(3): l.append(map(int,raw_input().split())) ans.append(l[-1][0]) for i in range(3): if sum(ans)<n: if n-sum(ans)>l[i][1]-l[i][0]: ans[i]=l[i][1] else: ans[i]+=n-sum(ans) if sum(ans)==n: break print ' '.join(map(str,ans))
最小値の和を見た後で2行目のmaxまででnになるならそれで、nにならなければmaxを使って更に次の行を見に行く。
B. Pasha and Tea
ざっくりと大意
・wミリリットルのティーポットと2n個のティーカップがある。カップの容量はそれぞれ\(a_i\)ミリリットルである。
・お茶会に女性n人と男性nを招待する。女性はそれぞれxミリリットル、男性は2xミリリットルのお茶を飲む。
・それぞれが一杯だけ飲むのでティーポットにどれだけお茶を用意しておくか??
方針のようなもの
・それぞれ場合分けして調べる。
n,w=map(int,raw_input().split()) l=map(int,raw_input().split()) l.sort() f=l[0] m=l[n] if 2*f>m: ans=m*n+m*n/2.0 else: ans=f*n+f*2*n print ans if ans<w else w
ティーカップをソートしてから最初はn-1,n番目を見ててWA。見るのは0,n番目だった。。。0番目の2倍よりn番目が小さかったら男性たちはn番目の量で女性たちはその半分になる。0番目の2倍よりn番目が大きければ女性たちは0番目の量で男性たちは0番目の倍の量を。女性をn-1番目ので見てしまうとティーカップが溢れる人が出てきてしまうのでWAになる。