Advertisement
viligen

ranking

Nov 8th, 2021
645
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.87 KB | None | 0 0
  1. def is_contest_password(any_dict, any_contest, any_password):
  2.     for any_k, any_v in any_dict.items():
  3.         if any_contest == any_k and any_dict[any_k] == any_password:
  4.             return True
  5.     return False
  6.  
  7.  
  8. def add_update_user(any_dict, any_user, any_contest, any_points):
  9.     if any_user not in any_dict:
  10.         any_dict[any_user] = {any_contest: any_points}
  11.         return any_dict
  12.     for any_k, any_v in any_dict.items():
  13.         if any_user == any_k and any_contest not in any_v:
  14.             any_dict[any_user].update({any_contest: any_points})
  15.             return any_dict
  16.         elif any_user == any_k and any_contest in any_v:
  17.             if any_dict[any_user][any_contest] < any_points:
  18.                 any_dict[any_user][any_contest] = any_points
  19.                 return any_dict
  20.  
  21.  
  22. initial_contest = {}
  23. contest_dict = {}
  24. contest_dict_final = {}
  25. data = input().split(":")
  26. while "end of contests" not in data:
  27.     contest_name, password = data
  28.     initial_contest[contest_name] = password
  29.     data = input().split(":")
  30.  
  31. data = input().split("=>")
  32. while "end of submissions" not in data:
  33.  
  34.     contest_name_, password_, username, points = data
  35.     points = int(points)
  36.     if is_contest_password(initial_contest, contest_name_, password_):
  37.         contest_dict_final = add_update_user(contest_dict, username, contest_name_, points)
  38.     data = input().split("=>")
  39.  
  40. max_points = 0
  41. sum_points = 0
  42. best_student = ""
  43. for k, v in contest_dict_final.items():
  44.     sum_points = sum(v.values())
  45.     if sum_points > max_points:
  46.         max_points = sum_points
  47.         best_student = k
  48.  
  49. print(f"Best candidate is {best_student} with total {max_points} points.")
  50. print("Ranking:")
  51. for k, v in sorted(contest_dict_final.items()):
  52.     print(f"{k}")
  53.     for sub_k, sub_v in sorted(v.items(), key=lambda kvp: -kvp[1]):
  54.         print(f"#  {sub_k} -> {sub_v}")
  55.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement