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

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

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

VK Cup 2012 Round 2 (Unofficial Div. 2 Edition)

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

A. Chores

sortings

ざっくりと大意

・PetyaとVasyaは兄弟である ・今日は両親にn個の難易度hの家事のミッションを任されて両親は家を離れた
・Petyaは兄なのでxより大きい家事をa個行い、Vasyaはx以下の家事をb個行う
・2番のサンプルはVasyaが行う難易度1の家事をPetyaも行うためにxが条件を満たさない

方針のようなもの

・ソートして境目の数の差で行けそうな気がする

n,a,b=map(int,raw_input().split())
l=[int(x) for x in raw_input().split()]
l.sort()
print l[-a]-l[b-1] if l[-a]-l[b-1]>=0 else 0

後で気づいたけどソート済みなのに>=0とか何を心配したんだろう。。。

B. Replacing Digits

ざっくりと大意

・1行目にn桁の105を超えない数aがある
・2行目にm桁の数sがある
・sの数を1つずつ使用してaを最大の数にする??

方針のようなもの

・aの桁が大きい方からみて、sの中に大きいものがあれば置換でいけるかな

#test 21でTLE解決できず。また後で
a=[int(x) for x in list(raw_input())]
s=[int(x) for x in list(raw_input())]
s.sort()
s=s[::-1]
chk=0
for i in range(len(s)):
    if s[i]<min(a):
        break
    for j in range(chk,len(a)):
        if s[i]<=min(a[j:]):
            chk=j+1
            break
        if s[i]>a[j]:
            a[j]=s[i]
            chk=j+1
            break
        chk=j+1
print ''.join(map(str,a))