Design a data structure to manage executable tasks.
Each task has:
taskId
(unique)
priority
(higher means executed earlier)
createdAt
(or
seq
) to break ties among equal priority (earlier first)
Support operations:
add(taskId, priority)
remove(taskId)
(task may or may not exist; removing a task prevents future execution)
executeNext() -> taskId | null
createdAt/seq
first.
executeNext()
.
remove()
efficiently even if the task is not at the top of the heap when removed.