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

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

Codeforces Beta Round #81

はい。当時すでにDiv.1 Div.2分かれ始めてたのが同じコンテストで開催された回のようです。難易度高いと思います。。 あと当時発売のプレステ2版のゲームのディスガイアがなんやらで問題文もゲーム風なアレ。
http://codeforces.com/contest/105

A. Transmigration

implementation

ざっくりと大意

・nの既に習得しているスキル、m個の未修のスキル。
・Transmigrationするとそのm個のスキルが習得できるが、既習のスキルの熟練度?がk落ちる。
・既習のは100未満になったら使えなくなった扱い、Transmigrationで習得したものは0からスタート??

方針のようなもの

・リストでそのルール通りに処理するだけかな?

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import time
import sys, io
import re, math
n,m,k=map(str, raw_input().split())
n,m=int(n),int(m)
k=int(k[-2]+k[-1])
#l=[int(x) for x in raw_input().split()]
a1,a2,b,answ,ansj=[],[],[],[],[]
for i in range(n):
    sk,ju=map(str, raw_input().split())
    a1.append(sk)
    a2.append(int(ju))
for j in range(m):
    b.append(raw_input())

for jk in range(n):
    chk=int(a2[jk]*k)
    if chk>=10000:
        answ.append(a1[jk])
        ansj.append(chk/100)
for jd in range(m):
    if b[jd] not in answ:
        answ.append(b[jd])
        ansj.append(0)

to=[]
for i in range(len(answ)):
    to.append([answ[i],ansj[i]])
to.sort()
print len(to)
for j in range(len(to)):
    print to[j][0],to[j][1]

コピペミスを省けば3回書き直しかな?最初に書き始めた方針に修正を重ねて無理やりにAC。
引っかかったのが、少数丸め誤差とnにmのスキルが既にあってもTransmigration消えないなら無視で消えるなら熟練度?を0で追加させるのとかがアレでした。