Codeforces Round #235 (Div. 2)
はい。
http://codeforces.com/contest/401
A. Vanya and Cards
ざっくりと大意
・Vanyaは正の数や負の数が印刷された色々なカードを持っている。
・Vanyaはn枚のカードの総和が0に等しくなって欲しい。
・絶対値でxを超えないカードが何枚あれば0に等しく出来るか??
方針のようなもの
・カードの総和とxで切り上げ除算する。
n,k=map(int,raw_input().split()) l=map(int,raw_input().split()) chk=sum(l) ans=(abs(chk)+k-1)/k print ans
B. Sereja and Contests
ざっくりと大意
・Serejaはプログラミングコンテストが好きだが、時々ネットの回線の事情で参加しないことがある。
・コンテストはDiv1とDiv2に分かれる。Div1はDiv2向けなしではラウンドが行われない。
方針のようなもの
・解読しにくい。。後で。
C. Team
ざっくりと大意
・n個の0とm個の1を0が2つ以上連続しないで1が3つ以上連続しない置き方があるか??
方針のようなもの
・1の方が多い場合は1の個数が0の個数*2+2より多いと置けない。
・0の方が多い場合は1の個数より2個以上多いと置けない。
・後は並べやすい並べ方で並べる。
n,m=map(int,raw_input().split()) ans=chk=0 if n-m>1 or m>n*2+2: print -1 elif n-m>=0: print '01'*m+'0'*(n-m) elif m>=n*2: print '110'*n+'1'*(m-n*2) else: print '110'*(m-n)+'10'*(n-(m-n))
0と1が同じ個数か0のが1つ多い場合は01を並べて最後に0を付け足す。
1の個数が0の2倍以上多い場合は110を並べて最後に多い分の1を付け足す。
それ以外は1が多い分だけ110を並べた後に10を残り分だけ付け足す。