Top.Mail.Ru

Для решения данной задачи можно использовать жадный алгоритм.

Шаги решения:
1. Прочитать значение M (целевой конец отрезка) из первой строки.
2. Создать пустой список segments для хранения отрезков.
3. Считать каждую последующую строку и добавить пару чисел (L, R) в список segments.
4. Отсортировать список segments по правым концам отрезков R в порядке возрастания.
5. Создать пустой список chosen_segments для хранения выбранных отрезков.
6. Установить переменную curr_end равной 0 (текущий конец выбранного покрывающего отрезка).
7. Пройти по каждому отрезку в отсортированном списке segments:
– Если левый конец отрезка больше или равен curr_end, добавить этот отрезок в список chosen_segments и обновить curr_end равным правому концу этого отрезка.
8. Вывести количество выбранных отрезков и их значения.

Асимптотическая сложность данного алгоритма составляет O(n*log(n)), где n – количество отрезков в исходном множестве.

   
[metform form_id="1136"]