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