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

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

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

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で正方形に(負ではない)整数が並んでいる。
・左上からスタートして右下がゴール