Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def is_contest_password(any_dict, any_contest, any_password):
- for any_k, any_v in any_dict.items():
- if any_contest == any_k and any_dict[any_k] == any_password:
- return True
- return False
- def add_update_user(any_dict, any_user, any_contest, any_points):
- if any_user not in any_dict:
- any_dict[any_user] = {any_contest: any_points}
- return any_dict
- for any_k, any_v in any_dict.items():
- if any_user == any_k and any_contest not in any_v:
- any_dict[any_user].update({any_contest: any_points})
- return any_dict
- elif any_user == any_k and any_contest in any_v:
- if any_dict[any_user][any_contest] < any_points:
- any_dict[any_user][any_contest] = any_points
- return any_dict
- initial_contest = {}
- contest_dict = {}
- contest_dict_final = {}
- data = input().split(":")
- while "end of contests" not in data:
- contest_name, password = data
- initial_contest[contest_name] = password
- data = input().split(":")
- data = input().split("=>")
- while "end of submissions" not in data:
- contest_name_, password_, username, points = data
- points = int(points)
- if is_contest_password(initial_contest, contest_name_, password_):
- contest_dict_final = add_update_user(contest_dict, username, contest_name_, points)
- data = input().split("=>")
- max_points = 0
- sum_points = 0
- best_student = ""
- for k, v in contest_dict_final.items():
- sum_points = sum(v.values())
- if sum_points > max_points:
- max_points = sum_points
- best_student = k
- print(f"Best candidate is {best_student} with total {max_points} points.")
- print("Ranking:")
- for k, v in sorted(contest_dict_final.items()):
- print(f"{k}")
- for sub_k, sub_v in sorted(v.items(), key=lambda kvp: -kvp[1]):
- print(f"# {sub_k} -> {sub_v}")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement