from functools import cmp_to_key
class Activity:
def __init__(self, activity_name, start, finish):
self.activity_name = activity_name
self.start = start
self.finish = finish
def __str__(self):
return f"{self.activity_name}"
def my_comparator(a, b):
if a.finish < b.finish:
return -1
elif a.finish > b.finish:
return 1
else:
return 0
activities = [
Activity("a1", 1, 3),
Activity("a2", 0, 4),
Activity("a3", 1, 2),
Activity("a4", 4, 6),
Activity("a5", 2, 9),
Activity("a6", 5, 8),
Activity("a7", 3, 5),
Activity("a8", 4, 8)
]
activities.sort(key=cmp_to_key(my_comparator))
# for activity in activities:
# print(activity, end = " ")
taken_activities = []
taken_activities.append(activities[0])
available_time = activities[0].finish
for i in range(1, len(activities)):
if activities[i].start >= available_time:
taken_activities.append(activities[i])
available_time = activities[i].finish
for activity in taken_activities:
print(activity)
ZnJvbSBmdW5jdG9vbHMgaW1wb3J0IGNtcF90b19rZXkKCmNsYXNzIEFjdGl2aXR5OgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGFjdGl2aXR5X25hbWUsIHN0YXJ0LCBmaW5pc2gpOgogICAgICAgIHNlbGYuYWN0aXZpdHlfbmFtZSA9IGFjdGl2aXR5X25hbWUKICAgICAgICBzZWxmLnN0YXJ0ID0gc3RhcnQKICAgICAgICBzZWxmLmZpbmlzaCA9IGZpbmlzaAogICAgICAgIAogICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGYie3NlbGYuYWN0aXZpdHlfbmFtZX0iCgoKZGVmIG15X2NvbXBhcmF0b3IoYSwgYik6CiAgICBpZiBhLmZpbmlzaCA8IGIuZmluaXNoOgogICAgICAgIHJldHVybiAtMQogICAgZWxpZiBhLmZpbmlzaCA+IGIuZmluaXNoOgogICAgICAgIHJldHVybiAxCiAgICBlbHNlOgogICAgICAgIHJldHVybiAwCgphY3Rpdml0aWVzID0gWwogICAgQWN0aXZpdHkoImExIiwgMSwgMyksCiAgICBBY3Rpdml0eSgiYTIiLCAwLCA0KSwKICAgIEFjdGl2aXR5KCJhMyIsIDEsIDIpLAogICAgQWN0aXZpdHkoImE0IiwgNCwgNiksCiAgICBBY3Rpdml0eSgiYTUiLCAyLCA5KSwKICAgIEFjdGl2aXR5KCJhNiIsIDUsIDgpLAogICAgQWN0aXZpdHkoImE3IiwgMywgNSksCiAgICBBY3Rpdml0eSgiYTgiLCA0LCA4KQogICAgXQphY3Rpdml0aWVzLnNvcnQoa2V5PWNtcF90b19rZXkobXlfY29tcGFyYXRvcikpCgojIGZvciBhY3Rpdml0eSBpbiBhY3Rpdml0aWVzOgojICAgICBwcmludChhY3Rpdml0eSwgZW5kID0gIiAiKQoKdGFrZW5fYWN0aXZpdGllcyA9IFtdCnRha2VuX2FjdGl2aXRpZXMuYXBwZW5kKGFjdGl2aXRpZXNbMF0pCmF2YWlsYWJsZV90aW1lID0gYWN0aXZpdGllc1swXS5maW5pc2gKCmZvciBpIGluIHJhbmdlKDEsIGxlbihhY3Rpdml0aWVzKSk6CiAgICBpZiBhY3Rpdml0aWVzW2ldLnN0YXJ0ID49IGF2YWlsYWJsZV90aW1lOgogICAgICAgIHRha2VuX2FjdGl2aXRpZXMuYXBwZW5kKGFjdGl2aXRpZXNbaV0pCiAgICAgICAgYXZhaWxhYmxlX3RpbWUgPSBhY3Rpdml0aWVzW2ldLmZpbmlzaAoKZm9yIGFjdGl2aXR5IGluIHRha2VuX2FjdGl2aXRpZXM6CiAgICBwcmludChhY3Rpdml0eSkKCg==