世紀の自演連投家ミジンコさん、には分からないかもしれないので、
startをソートして、その順にendを並べ替え
end_new[n] = 最大値([end[0],...,end[n]])として計算
end_new[n]<start[n+1]を満たさないn+1を廃棄
ですね!