eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Мінімальне покриття

Мінімальне покриття

Серед заданої множини відрізків прямої з цілочисельними координатами кінців \[\textbf{L_i}, \textbf{R_i}\] необхідно вибрати підмножину найменшої потужності, яка повністю покриває відрізок \[\textbf{0}, \textbf{M}\], де \textbf{M} -- ціле додатне число. \InputFile У першому рядку записано ціле число \textbf{M} (\textbf{1} ≤ \textbf{M} ≤ \textbf{5000}). У наступних рядках перераховані пари цілих чисел \textbf{L_i} та \textbf{R_i} (|\textbf{L_i}|, |\textbf{R_i}| ≤ \textbf{50000}), кожна пара з нового рядка, числа в парах авдокремлені одне від одного одним чи декількома пропусками. Список завершується парою нулів. Список містить не більше \textbf{100000} пар чисел, включаючи пару нулів. \OutputFile Програма повинна формувати у першому рядку потрібне мінимальне число відрізків із заданої множини, необхідне для покриття відрізка \[\textbf{0}, \textbf{M}\]. Далі повинен йти список покриваючої підмножини, упорядкований за зростанням координат лівих кінців відрізків. Список відрізків виводиться у тому ж форматі, що і на вході, завершуючу пару нулів виводити не потрібно. Якщо покриття відрізка \[\textbf{0}, \textbf{M}\] заданою множиною відрізків \[\textbf{L_i}, \textbf{R_i}\] неможливо, то слід вивести єдину фразу "\textbf{No solution}".
Ліміт часу 2 секунди
Ліміт використання пам'яті 16 MiB
Вхідні дані #1
1
-1 0
-5 -3
2 5
0 0
Вихідні дані #1
No solution