#A5128. 路灯照亮

路灯照亮

题目背景

一条笔直的公路,从第 1 个灯柱位置一直排到第 N 个灯柱位置,需要被路灯照亮。市政部门提供了 n 种可供选择的路灯安装方案,第 i 种方案能在公路上照亮一段连续的范围 [l_i, r_i]。

每盏灯只能选择安装或者不安装。市政部门希望用尽量少的路灯,让整条公路(从位置 1 到位置 N)都被照亮。

题目描述

给定公路范围 [1, N] 和 n 种路灯的照明范围 [l_i, r_i],选出最少的方案,使得这些范围的并集完全覆盖 [1, N]。输出最少需要的灯数;如果无论怎么选都照不满整条路,输出 `-1`。

输入格式

第一行两个整数 N, n。

接下来 n 行,每行两个整数 l, r,表示一种方案的照明范围。

输出格式

一个整数,表示最少需要安装的路灯数量;若照不满整条路,输出 `-1`。

输入输出样例

10 4
1 4
3 7
6 10
8 10
3

样例 1 解释

选 [1,4]、[3,7]、[6,10],并集为 [1,10],正好照满整条公路,共 3 盏;用 2 盏照不满。

说明/提示

1 ≤ N ≤ 10^9

1 ≤ n ≤ 10^5

1 ≤ l < r ≤ 10^9

路灯照明范围可以超出公路 [1, N];无解输出 `-1`