読者です 読者をやめる 読者になる 読者になる

君はまるで砂漠に咲く、一輪の花。

僕はその花に引き寄せられる蝶。

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を残り分だけ付け足す。