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

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

Codeforces Round #346 (Div.2)

はい。
http://codeforces.com/contest/659

A. Round House

ざっくりと大意

・n箇所が輪になって並んでいる。a地点から動き始めてb>0なら時計回りに、b<0なら反時計回りに|b|移動して何番目のトコにいるか??

Python2

n,a,b=map(int,raw_input().split())
l=range(1,n+1)+range(1,n+1)+range(1,n+1)
print l[a+n+b%n-1]

長さnを3つ繋げて2番目のグループから移動でループを偽装した。2周目とか何も変わらないし意味は無いのでb%nをした。

B. Qualifying Contest

ざっくりと大意

・2人チームをm個作る。名前,地域,スコアの情報が与えられるのでそれぞれの地域ごとにスコア上位2名を選んでチームを決める。
・チームが一意に決まるなら2人の名前を、スコア上位2名が一意に決まらないなら?を出力する。

Python2

n,m=map(int,raw_input().split())
d={}
for i in range(n):
    a,b,c=map(str,raw_input().split())
    b=int(b)
    if b in d:
        d[b].append((int(c),a))
    else:
        d[b]=[(int(c),a)]
for i in range(1,m+1):
    tmp=d[i]
    tmp.sort()
    if len(tmp)>2 and tmp[-2][0]==tmp[-3][0]:
        print '?'
    else:
        print tmp[-1][1],tmp[-2][1]

地域をキーにして連想配列に放り込んだ。一度AC出た後に連想配列に入れる(スコア,名前)を情報を上位者に絞ってheapqでスコアが上位にならない人は追加しないように試してみたけどうまくいかなかった。あと、単に追加しないだけなら最長で3だろうしheapqの必要もなかったかもしれない。そのうち試すかもしれない。

C. Tanya and Toys

ざっくりと大意

・あとで