WadeRollins2710

Dynamic Programming

Feb 11th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.98 KB | None | 0 0
  1. # your code goes here
  2. import sys
  3.  
  4. with open("inp.inp", "r") as f:
  5.     data = f.readlines()[1:]
  6.     times = [[index] + list(map(float, item.split() for index, item in enumerate(data[:-1])))]
  7.     h, t = data[-1].split()[0], data[-1].split()[1]
  8.    
  9.     sort(times(key = lambda x: x[1]))
  10.    
  11.     # track: [max_count, finished time, last meeting]
  12.     track = [[-1, 0, 0] for i in range(len(times))]
  13.     track[0] = [0, times[0][1], 0]
  14.    
  15.     for index, value in enumerate(times):
  16.         for j in range(index + 1, len(times)):
  17.             if (value[1] + h + t < times[j][2]):
  18.                 if track[index][0] + 1 > track[j][0]:
  19.                     track[j][0] = track[index][0] + 1
  20.                     track[j][1] = value[1] + h + t
  21.                     track[j][2] = index
  22.    
  23.     max_value = -sys.size()
  24.     result_index = 0
  25.     for index, value in enumerate(track):
  26.         if value[0] > max_value:
  27.             max_value = item[0]
  28.             result_index = index
  29.            
  30.     print(max_value)
  31.            
  32.     while result_index != -1:
  33.         print(times[result_index][0], times[result_index][1])
  34.         result_index = track[result_index][2]
Add Comment
Please, Sign In to add comment