Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
2.8 kB
1
Indexable
Never
from collections import defaultdict

n = int(input())

disciplines = {}

for i in range(n):
    name, partic = input().split(',')
    disciplines[name] = int(partic)
    disciplines[name] = {
        'max': int(partic),
        'players': defaultdict(dict),
        'count': 0,
        'maxScore': -99999999,
        'minScore': 99999999,
    }


def addPlayer(disc, name, score, fine):
    disc['players'][score].update({fine: name})
    disc['count'] += 1
    if disc['count'] > 1:
        disc['maxScore'] = max(disc['maxScore'], score)
        disc['minScore'] = min(disc['minScore'], score)
    else:
        disc['maxScore'] = score
        disc['minScore'] = score


m = int(input())

players = {}

for i in range(m):
    name, discName, score, fine = input().split(',')
    score = int(score)
    fine = int(fine)
    dis = disciplines[discName]
    players = dis['players']
    if dis['count'] < dis['max']:
        addPlayer(dis, name, score, fine)
    else:
        if dis['minScore'] < score:
            weak = players[dis['minScore']]
            if len(weak) == 1:
                dis['count'] -= 1
                del players[dis['minScore']]
                scores = players.keys()
                if len(scores) > 0:
                    cMin = cMax = list(scores)[0]
                    for s in scores:
                        if s < cMin:
                            cMin = s
                        if s > cMax:
                            cMax = s
                    dis['minScore'] = cMin
                    dis['maxScore'] = cMax
                    dis['players'] = players
                addPlayer(dis, name, score, fine)
            else:
                fines = players[dis['minScore']].keys()
                if len(fines) > 0:
                    cMax = list(fines)[0]
                    for f in fines:
                        if f > cMax:
                            cMax = f
                    exfine = cMax
                    dis['count'] -= 1
                    del players[dis['minScore']][exfine]
                dis['players'] = players
                addPlayer(dis, name, score, fine)
        elif dis['minScore'] == score:
            fines = players[dis['minScore']].keys()
            cMax = list(fines)[0]
            for f in fines:
                if f > cMax:
                    cMax = f
            exfine = cMax
            if exfine > fine:
                dis['count'] -= 1
                del players[dis['minScore']][exfine]
                dis['players'] = players
                addPlayer(dis, name, score, fine)

    disciplines[discName] = dis

winners = []

for d in disciplines.values():
    for s in d['players'].values():
        for p in s.values():
            winners.append(p)

winners.sort()
for w in winners:
    print(w)