Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- contests = {}
- def check_contest(name, pasw):
- if name in contests:
- return contests[name] == pasw
- def manage_student(sts: dict, std: str, con: str, pts: int):
- if std not in sts:
- sts[std] = {con: pts}
- elif std in sts:
- if con not in sts[std]:
- sts[std].update({con: pts})
- else:
- if pts > sts[std][con]:
- sts[std][con] = pts
- while True:
- data = input()
- if data == 'end of contests':
- break
- data = data.split(':')
- if len(data) >= 2:
- contest = data[0]
- password = data[1]
- contests[contest] = password
- students = {}
- while True:
- stuff = input()
- if stuff == 'end of submissions':
- break
- stuff = stuff.split('=>')
- contest_part = stuff[0]
- password_try = stuff[1]
- student = stuff[2]
- points = int(stuff[3])
- if check_contest(contest_part, password_try):
- manage_student(students, student, contest_part, points)
- students_points = {}
- for x, y in students.items():
- point = sum(y.values())
- students_points.update({x: point})
- winner = ''.join([x for (x, y) in students_points.items() if y == max(students_points.values())])
- order = sorted(students, key=lambda i: i)
- print(f'Best candidate is {winner} with total {students_points[winner]} points.')
- print('Ranking: ')
- for k in order:
- print(f'{k}')
- # con_order = sorted(students[k], key=lambda g: students[k][g], reverse=True)
- # [print(f'# {t} -> {students[k][t]}') for t in con_order]
- [print(f'# {t} -> {students[k][t]}') for t in sorted(students[k], key=lambda g: students[k][g], reverse=True)]
Advertisement
Add Comment
Please, Sign In to add comment