Codeforces Beta Round #2
はい。
http://codeforces.com/contest/2
A.Winner
implementation,hashing
ざっくりと大意
・一度はゲームの終わりまで見て最終形での最高点者たちが勝利者候補になる。
・もう一度ゲームのスコアの流れを追って勝利者候補の中からより早く最終形での最高点を越えたものが勝者である??
・最終形での候補者がより早いタイミングで点を超えればその時点で勝利者判定して終わりらしい。その以降の流れで一時的な減点で最高点を下回るとしてもその件は無視するらしい。
方針のようなもの
・最終形のスコアを確認してから、もう一度得点の流れを追う。
name,score,log=[],[],[] n=int(raw_input()) for i in range(n): a,b=map(str,raw_input().split()) if a in name: score[name.index(a)]+=int(b) else: name.append(a) score.append(int(b)) log.append((a,int(b))) win=max(score) name2,score2,l=[],[],[] for i in range(len(score)): if score[i]==win: l.append(name[i]) for i in log: if i[0] in name2: score2[name2.index(i[0])]+=i[1] else: name2.append(i[0]) score2.append(i[1]) if score2[name2.index(i[0])]>=win and i[0] in l: print i[0] break
問題文の意味や勝利条件の理解がとても困難だったが条件を理解すれば複雑な手順とか要らなかった。
B. The least round way
ざっくりと大意
・n*nで正方形に(負ではない)整数が並んでいる。
・左上からスタートして右下がゴール