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

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

Codeforces Round #115

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

A. Robot Bicorn Attack

brute force,implementation

ざっくりと大意

・VasyaはRobot Bicorn Attackというゲームで遊んでいる
・3ラウンド遊ぶゲームでそれぞれのラウンドで負の数ではないポイントを得る
・1列に書かれた数字から3ラウンドのポイントの和が最大になる区切り方をした時の和はいくつか??
・ただし1つのラウンドで1000000(106)を超えるポイントはナシ

方針のようなもの

・入力は最大で30桁らしいので結構テキトーに探してイケるのでは??

l=list(raw_input())
n=len(l)
ans=-1
for i in range(1,n-1):
    chk=-1
    for j in range(i+1,n):
#        print l[:i],l[i:j],l[j:]
        f=int(''.join(map(str,l[:i])))
        s=int(''.join(map(str,l[i:j])))
        t=int(''.join(map(str,l[j:])))
        if len(l[:i])==len(str(f)) and len(l[i:j])==len(str(s)) and len(l[j:])==len(str(t)):
            if f<=1000000 and s<=1000000 and t<=1000000:
                ans=max(ans,f+s+t)
print ans

今日のは区切り方、取り出し方が一番苦労したトコ。与えられる文字列が最大30文字なのに、1Rごとの最大の区切りは106のスコアを越えないっていうのはよくわからん制限だな。

B. Plane of Tanks: Pro

implementation

ざっくりと大意

・VasyaはPlane of Tanksというゲームで友人たちと遊んでいる
・"プレーヤーのカテゴリーを決定するためには、最良の結果をプレーヤーおよび他のプレーヤーの最良の結果によって得られたと考えてください"
・99%以上より良かったらpro、90%以上より良かったらhardcore以下続く・・・

方針のようなもの

・スコア判定に自分自身を含むのは結構な罠だったような
連想配列に押し込んでから比較する

n=int(raw_input())
l={}
for i in range(n):
    a,b=map(str, raw_input().split())
    if l.has_key(a):
        if l[a]<int(b):
            l[a]=int(b)
    else:
        l[a]=int(b)
name=l.keys()
score=l.values()
if len(name)==1:
    print 1
    print name[0],'pro'
    exit()
for i in range(len(name)):
    k=m=0
    for j in range(len(score)):
        if score[i]>=score[j]:
            k+=1
    if 100*k/(len(name))>=99:
        l[name[i]]='pro'
    elif 100*k/(len(name))>=90:
        l[name[i]]='hardcore'
    elif 100*k/(len(name))>=80:
        l[name[i]]='average'
    elif 100*k/(len(name))>=50:
        l[name[i]]='random'
    else:
        l[name[i]]='noob'
name.sort()
print len(name)
for i in name:
    print i,l[i]