习题-华华听月月唱歌
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
struct Node{
int l, r;
bool operator <(const Node W){
return l < W.l;
}
}p[N];
signed main(){
int n, m; cin >> n >> m;
for(int i = 0; i < m; ++i) cin >> p[i].l >> p[i].r;
sort(p, p + m);
int r = 0, maxr = 0;
int res = 0, i = 0;
while(r < n && i < m){
++res;
if(r + 1 < p[i].l){
cout << -1 << endl;
return 0;
}
while(p[i].l <= r + 1 && i < m){
maxr = max(maxr, p[i].r);
++i;
}
r = maxr;
}
if(r < n) cout << -1 << endl;
else cout << res << endl;
return 0;
}