meeting_room_count = 0
meeting_count = 0
meeting_rooms = []
meetings = []
def input_parameters():
global meeting_room_count
global meeting_count
global meeting_rooms
global meetings
raw_parameters = input("Input: ")
parameters = raw_parameters.split(' ')
meeting_room_count = int(parameters[0])
meeting_count = int(parameters[1])
i = 0
while i < meeting_room_count:
raw_meeting_room = input().split(' ')
meeting_room = [int(raw_meeting_room[0]), int(raw_meeting_room[1])]
meeting_rooms.append(meeting_room)
i = i + 1
j = 0
while j < meeting_count:
raw_meeting = input().split(' ')
meeting = [int(raw_meeting[0]), int(raw_meeting[1]), int(raw_meeting[2]), int(raw_meeting[3])]
meetings.append(meeting)
j = j + 1
def process():
meeting_rooms.sort(key=lambda item: item[1])
return resolve()
def total_meeting_time(arrangement=None):
total = 0
if arrangement is not None:
for meeting_index in arrangement:
total += (meetings[meeting_index][3] - meetings[meeting_index][2])
return total
def get_available_meeting_room(arrangement, meeting):
occupied_meeting_rooms = []
if arrangement is not None:
for meeting_index, meeting_room_index in arrangement.items():
if meetings[meeting_index][2] < meeting[3] and meetings[meeting_index][3] > meeting[2]:
occupied_meeting_rooms.append(meeting_room_index)
available_meeting_rooms = []
for index in range(meeting_room_count):
if index in occupied_meeting_rooms:
continue
if meeting_rooms[index][1] >= meeting[1]:
available_meeting_rooms.append(index)
return available_meeting_rooms
def resolve(init_arrangement=None, init_index=0):
max_meeting_time = total_meeting_time(init_arrangement)
index = init_index
while index < meeting_count:
if init_arrangement is None:
arrangement = {}
else:
arrangement = init_arrangement.copy()
available_meeting_rooms = get_available_meeting_room(arrangement, meetings[index])
if len(available_meeting_rooms) == 0:
max_meeting_time = max(max_meeting_time, total_meeting_time(arrangement))
else:
for available_meeting_room in available_meeting_rooms:
arrangement[index] = available_meeting_room
max_meeting_time = max(max_meeting_time, resolve(arrangement, index+1))
index += 1
return max_meeting_time
# case sample1(expected result=7):
# meeting_room_count = 2
# meeting_count = 4
# meeting_rooms = [[1101, 90], [2102, 60]]
# meetings = [[101, 90, 1, 4], [102, 60, 1, 3], [103, 60, 4, 5], [104, 90, 1, 5]]
# case sample2(expected result=20):
# meeting_room_count = 3
# meeting_count = 6
# meeting_rooms = [[1101, 90], [2101, 60], [3101, 30]]
# meetings = [[101, 60, 1, 4], [102, 60, 1, 6], [103, 30, 4, 9], [104, 90, 6, 9], [105, 60, 7, 9], [106, 30, 3, 7]]
# case1(expected result=5):
# meeting_room_count = 1
# meeting_count = 4
# meeting_rooms = [[2101, 60]]
# meetings = [[104, 60, 1, 5], [102, 90, 1, 8], [101, 60, 3, 6], [103, 60, 1, 6]]
# case2(expected result=24):
# meeting_room_count = 3
# meeting_count = 6
# meeting_rooms = [[1101, 50], [2101, 80], [3101, 40]]
# meetings = [[102, 80, 1, 5], [104, 60, 1, 3], [103, 50, 1, 3], [105, 40, 5, 9], [106, 60, 1, 19], [101, 70, 3, 4]]
# case3(expected result=20):
# meeting_room_count = 4
# meeting_count = 4
# meeting_rooms = [[2103, 50], [1102, 80], [3104, 60], [4105, 100]]
# meetings = [[104, 50, 1, 9], [103, 70, 3, 7], [102, 30, 2, 8], [101, 60, 4, 6]]
# case4(expected result=0):
# meeting_room_count = 0
# meeting_count = 2
# meetings = [[101, 5, 0, 2], [102, 3, 22, 24]]
# case5(expected result=0):
# meeting_room_count = 2
# meeting_count = 0
# meeting_rooms = [[1101, 50], [2101, 80]]
# case6(expected result=0):
# meeting_room_count = 4
# meeting_count = 4
# meeting_rooms = [[1101, 10], [2101, 5], [3101, 15], [4101, 20]]
# meetings = [[101, 30, 1, 5], [103, 50, 1, 5], [104, 100, 3, 5], [102, 25, 8, 10]]
# case7(expected result=27):
# meeting_room_count = 2
# meeting_count = 5
# meeting_rooms = [[2103, 50], [1102, 60]]
# meetings = [[104, 50, 1, 2], [102, 50, 3, 4], [103, 50, 5, 6], [101, 50, 7, 8], [106, 60, 0, 23]]
# case8(expected result=56):
# meeting_room_count = 4
# meeting_count = 10
# meeting_rooms = [[1101, 70], [2101, 60], [3102, 80], [4103, 90]]
# meetings = [[104, 50, 1, 2], [102, 90, 3, 4], [103, 100, 5, 17], [101, 70, 7, 8], [105, 80, 15, 24], [106, 80, 0, 24], [109, 60, 0, 5], [108, 70, 19, 24], [107, 90, 1, 21], [110, 80, 9, 19]]
input_parameters()
result = process()
print(result)