Advertisement
aanodin

Untitled

Apr 29th, 2020
555
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.20 KB | None | 0 0
  1. import re
  2.  
  3.  
  4. def parse_ball(str):
  5.     _, pl, team, _ = re.split('BALL ([a-zA-Z]*)\((\d)\)', str)
  6.     return "BALL", pl, int(team)
  7.  
  8.  
  9. def parse_foul(str):
  10.     _, pl, team, n, _ = re.split('FOUL ON ([a-zA-Z]*)\((\d)\) ([0-9]*)', str)
  11.     return "FOUL ON", pl, int(team), int(n)
  12.  
  13.  
  14. def parse_ring(str):
  15.     _, L, res, _ = re.split('RING ([0-9]*) ([0-9]*)', str)
  16.     return "RING", int(L), int(res)
  17.  
  18.  
  19. def parse_free(str):
  20.     _, res, _ = re.split('FREE ([0-9]*)', str)
  21.     return "FREE", int(res)
  22.  
  23.  
  24. def parse_input(str):
  25.     if 'BALL' in str:
  26.         return parse_ball(str)
  27.     elif 'FOUL' in str:
  28.         return parse_foul(str)
  29.     elif 'RING' in str:
  30.         return parse_ring(str)
  31.     elif 'FREE' in str:
  32.         return parse_free(str)
  33.  
  34. class Data:
  35.     def __init__(self):
  36.         self.score = 0
  37.         self.transfer = 0
  38.         self.block = 0
  39.         self.get = 0
  40.  
  41.     def __str__(self):
  42.         return "{} {} {} {}".format(self.score, self.transfer, self.block, self.get)
  43.  
  44. N0 = int(input())
  45. names_0 = []
  46. for i in range(N0):
  47.     names_0.append(input())
  48.  
  49. N1 = int(input())
  50. names_1 = []
  51. for i in range(N1):
  52.     names_1.append(input())
  53.  
  54. Q = int(input())
  55.  
  56.  
  57. teams = []
  58. teams.append({name: Data() for name in sorted(names_0)})
  59. teams.append({name: Data() for name in sorted(names_1)})
  60.  
  61. prev_team = -1
  62. prev_player = None
  63.  
  64. cur_team = -1
  65. cur_player = None
  66.  
  67. prev_line = None
  68.  
  69. foul_n = 0
  70.  
  71.  
  72. for i in range(Q):
  73.     line = input()
  74.     parsed = parse_input(line)
  75.     op = parsed[0]
  76.     if op == 'BALL':
  77.         prev_team = cur_team
  78.         prev_player = cur_player
  79.         cur_team = parsed[2]
  80.         cur_player = parsed[1]
  81.  
  82.         if prev_line != None:
  83.             # block
  84.             parsed_prev = parse_input(prev_line)
  85.             if parsed_prev[0] == 'BALL':
  86.                 if parsed_prev[2] != cur_team:
  87.                     teams[cur_team][cur_player].block += 1
  88.  
  89.             # gets
  90.             if parsed_prev[0] == 'FREE':# and cur_team != prev_team:
  91.                 if parsed_prev[1] == 0 and foul_n == 0:
  92.                     teams[cur_team][cur_player].get += 1
  93.  
  94.             if parsed_prev[0] == 'RING':# and cur_team != prev_team:
  95.                 if parsed_prev[2] == 0:
  96.                     teams[cur_team][cur_player].get += 1
  97.  
  98.     if op == 'FOUL ON':
  99.         prev_team = cur_team
  100.         prev_player = cur_player
  101.         cur_team = parsed[2]
  102.         cur_player = parsed[1]
  103.         foul_n = parsed[3]
  104.  
  105.     if op == 'RING':
  106.         L = parsed[1]
  107.         res = parsed[2]
  108.         # ring
  109.         if res == 1 and L <= 675:
  110.             teams[cur_team][cur_player].score += 2
  111.         elif res == 1 and L > 675:
  112.             teams[cur_team][cur_player].score += 3
  113.  
  114.         # transfer
  115.         if res == 1 and prev_team == cur_team and prev_player != cur_player:
  116.             teams[prev_team][prev_player].transfer += 1
  117.  
  118.     if op == 'FREE':
  119.         foul_n -= 1
  120.         res = parsed[1]
  121.         if res == 1:
  122.             #free
  123.             teams[cur_team][cur_player].score += 1
  124.  
  125.     prev_line = line
  126.  
  127.  
  128. for tid, t in enumerate(teams):
  129.     keys = sorted(teams[tid].keys())
  130.  
  131.     for k in keys:
  132.         data = teams[tid][k]
  133.         print(tid, k, data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement