Codeforces Beta Round #19
はい。
A. World Football Cup
implementation
ざっくりと大意
・なんかワールドカップのような大会で総当り戦?試合の組み合わせ数はn(n-1)/2かな
・勝ったチームは勝ち点3、負けたチームはなし。引き分けは両チームに勝ち点1。
・上位半分のチームが勝ち抜け?勝ち抜けラインで勝ち点で同点があったら得失点差の大小で判定、それでも同点なら総得点で判定?
・最後は勝ち抜けチームを辞書順で出力。(勝ち点1位からではない)
方針のようなもの
・自分ではAC通せずでした。。。
・チーム名をキーにして辞書を用意して、試合結果に応じてアイテムを加算するというのは悪くはなかったようです。
自力では出来なかったので89597のpank.dmさんをパクりました。
#!/usr/bin/env python # -*- coding: UTF-8 -*- n=int(raw_input()) teams=[] res={} #最初に与えられるチーム名をkeyにして辞書作成 for i in range(n): s=raw_input().strip('\n') res.setdefault(s,[0,0,0]) #print res #総当り戦の組合せ分forをぶん回し for i in range(n*(n-1)/2): #組合せと試合結果を一行受け取って、組合せと結果を分ける s=raw_input().strip('\n') t,score=s.split() #更に分ける t1,t2=t.split('-') a1,a2=map(int, score.split(':')) if a1>a2: res[t1][0]+=3 if a2>a1: res[t2][0]+=3 if a1==a2: res[t1][0]+=1 res[t2][0]+=1 #得失点差とそのままの得点を辞書のチーム名に合わせて加算 res[t1][1]+=a1-a2 res[t2][1]+=a2-a1 res[t1][2]+=a1 res[t2][2]+=a2 ans=list(sorted(res.keys(), key=lambda x:res[x], reverse=True))[:n/2] for a in sorted(ans): print a
辞書操作、keyやitemsでのソート、lambda式とかもっと覚えないと解ける問題の幅が広がらない。。