marichan022

hash code 2022

Feb 24th, 2022
1,207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.08 KB | None | 0 0
  1. import sys
  2.  
  3.  
  4. class Project():
  5.     def __init__(self, name, duration, score, deadline, reqs):
  6.         self.name = name
  7.         self.duration = duration
  8.         self.score = score
  9.         self.deadline = deadline
  10.         self.n_contribs = len(reqs)
  11.         self.reqs = reqs
  12.  
  13.     def __repr__(self):
  14.         return f"{self.name} ({self.deadline}, {self.duration}): {self.reqs}"
  15.  
  16.  
  17. class Contributor():
  18.     def __init__(self, name, skills):
  19.         self.name = name
  20.         self.skills = skills
  21.         self.available_on = 0
  22.  
  23.     def __repr__(self):
  24.         return f"{self.name} {self.skills}"
  25.  
  26.  
  27. class Skill():
  28.     def __init__(self, name, level):
  29.         self.name = name
  30.         self.level = level
  31.  
  32.     def __repr__(self):
  33.         return f"{self.name} {self.level}"
  34.  
  35.  
  36. def main(filename):
  37.     with open(filename, 'r') as file:
  38.         lines = file.read().strip().split('\n')
  39.    
  40.     n_contribs, n_projs = list(map(int, lines.pop(0).split()))
  41.     contribs = []
  42.     projs = []
  43.     contribs_by_skill = {}
  44.  
  45.     for i in range(n_contribs):
  46.         contrib_name, n_skills = lines.pop(0).split()
  47.         skills = []
  48.         for j in range(int(n_skills)):
  49.             skill_name, level = lines.pop(0).split()
  50.             skills.append(Skill(skill_name, int(level)))
  51.         c = Contributor(contrib_name, skills)
  52.         contribs.append(c)
  53.         for s in c.skills:
  54.             try:
  55.                 contribs_by_skill[s.name].append(c)
  56.             except Exception as e:
  57.                 contribs_by_skill[s.name] = [c]
  58.  
  59.     for i in range(n_projs):
  60.         proj_name, duration, score, deadline, n_reqs = lines.pop(0).split()
  61.         reqs = []
  62.         for j in range(int(n_reqs)):
  63.             skill_name, level = lines.pop(0).split()
  64.             reqs.append(Skill(skill_name, int(level)))
  65.         projs.append(Project(proj_name, int(duration), int(score), int(deadline), reqs))
  66.  
  67.     projs.sort(key=lambda p: (p.deadline, p.duration))
  68.    
  69.     for p in projs:
  70.         # print(p)
  71.         for r in p.reqs:
  72.            
  73.  
  74.  
  75. if __name__ == "__main__":
  76.     main(sys.argv[1])
  77.  
Advertisement
Add Comment
Please, Sign In to add comment