P1668
#include<bits/stdc++>
using namespace std;
int n,m;
struct cow{
int l;
int r;
}arr[100100];
bool cmp(cow a,cow b){
if(a.l!=b.l) return a.l<b.l;
else return (a.r-a.l+1)>(b.r-b.l+1);
}
bool cmp2(cow a,cow b){
if(a.l!=b.l) return a.l<b.l;
else return (a.r-a.l+1)<(b.r-b.l+1);
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>arr[i].l>>arr[i].r;
}
sort(arr+1,arr+n+1,cmp);
if(arr[1].l>1){
cout<<-1;
return 0;
}
int t=arr[1].r;
sort(arr+1,arr+1+n,cmp2);
if(arr[n].r<m){
cout<<-1;
return 0;
}
int ans=1;
for(int i=1;i<=n;i++){
if(t>=m){
cout<<ans;
return 0;
}
if(arr[i].l<=t+1){
if(arr[i].r>=m){
cout<<ans+1;
return 0;
}
if(!(arr[i+1].l<=t+1 && i+1<=n)){
t=arr[i].r;
ans++;
}
}
else{
cout<<-1;
return 0;
}
}
return 0;
}
72分