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

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

Codeforces Round #320 (Div.2) Bayan Thanks-Round

はい。
http://codeforces.com/contest/579
マークダウン記法でテーブル上手く書けなくて辛い。

A. Raising Bacteria

ざっくりと大意

・倍々に増えるバクテリアの数をxにするのに必要な最小はいくつか??
・5にするなら1,2,4と増えたトコに1足して5になるので必要なのは2。8にするなら1,2,4,8で8になるので必要なのは1。

方針のようなもの

・1,2,4,8...という増え方について考える。

python

print bin(int(raw_input()))[2:].count('1')

初めは1のバクテリアが倍々に増えていくのはビットシフトでの増え方と同じである。そのため2進数表記での1の個数がバクテリアをxにするために必要な最小と同じになる。

B. Finding Team Member

ざっくりと大意

・2n人の参加者がそれぞれ2人チームでプログラミングコンテストに出る。
・ペアを作った時の力が最大になるようにする。
・ペアにする数を2つずつ1行で力が大きい方から出力する。1と2をペアにすることがあっていれば1 2でも2 1でも順は問わない。

@ 1 2 3 4
1 @ 6 1 3
2 6 @ 2 4
3 1 2 @ 5
4 3 4 5 @

入力で与えられているのは1行目が入力の全ての行が1行目込みで2n行である、プロコン参加者が2n人であるということ。
2行目からは2n-1人のそれぞれの番目の人とペアのときの力が与えられる。2行目の6は1,2がペアの時に力が6であるということ。3行目の1 2は1,3のペアで力が1、2,3のペアで力が2であるということ。

方針のようなもの

・あとで