'''
CodeJam Practice 2008 qualification round question B
Created on 2012-12-11
@author: festony
'''
from codejam_template_decorator import *
curr_working_folder = 'G:\\Project\\Codejam_inout\\2008\\q\\'
curr_file_name = 'B-large-practice'
def parse_time(hh_mm, turnaround):
times = hh_mm.split(':')
return int(times[0]) * 60 + int(times[1]) + turnaround
def accumulate(x):
# always put a 0 in result sequence: result is >= 0 anyway
r = [0]
for i, v in enumerate(x):
r.append(r[i] + v)
return r
@run_it_multi_case(working_folder=curr_working_folder, file_name=curr_file_name)
def process_func():
turnaround = [0, int(read_line())]
trips_num = map(int, read_line().split(' '))
A, B = [], []
S = [A, B]
for i in range(trips_num[0] + trips_num[1]):
times = map(parse_time, read_line().split(' '), turnaround)
if i == trips_num[0]:
S.reverse()
S[0].append([times[0], 1])
S[1].append([times[1], -1])
# !!!!!!
# when sorting, if at the same time a train is ready for leave
# and a train must leave, then always put the one with -1 (arrival
# and ready to leave) ahead.
seq_A = map(lambda x:x[1], sorted(A, key=lambda x:x[0] + x[1] * 0.1))
seq_B = map(lambda x:x[1], sorted(B, key=lambda x:x[0] + x[1] * 0.1))
r_a = max(accumulate(seq_A))
r_b = max(accumulate(seq_B))
return '%d %d' % (r_a, r_b)
process_func()
Codejam 2008 qualification round question B
最新推荐文章于 2021-03-28 03:13:33 发布