из, скажем, десятка работ с длительностью 1,2,3....9,10 […] при бОльшем количестве работ в области 9-10?
При таком раскладе результат будет неверным, половина результат будет верной, а другая половина будет копией первой.
Особенно не ясно когда и для чего вызывается второй раз swap(arr, i, size - 1);