while (!ends.empty() && ends.front() <= realStart) {
while (!ends.empty() && ends.front() <= arrival) {
По идее надо хранить очередь необработанных пока пакетов и время, когда освободится процессор. Надо, пока он освободится раньше нового пакета обрабатывать пакет из очереди. Иначе добавлять текущий пакет в очередь, если там есть место.
У вас же выводится время добавления в очередь.
отсортировать их (сначала по x, потом по y)
удалить полностью покрываемые новым отрезком, а торчащие из него укоротить
где про это написано и как это работает
если просто использовать { [element]: true } то пишет ошибку
А вот как избавиться от переполнение стека я не пока не понимаю
да, с очень большой вероятностью.