```cpp
#include<bits/stdc++.h>
#define MAX 100010
using namespace std;
int n, ll, rr;
int l[MAX], r[MAX];
int sl,sr;
void swap(int &a, int &b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
void sorted()
{
for(int i = 0; i < n; i++)
{
for(int j = i + 1; j < n; j++)
{
if(l[i] > l[j])
{
swap(r[i], r[j]);
swap(l[i], l[j]);
}
}
}
}
void quickSort(int *arr,int *a,int begin,int end)
{
if(begin < end)
{
int temp = arr[begin];
int t = a[begin];
int i = begin;
int j = end;
while(i < j)
{
while(i<j && arr[j] > temp)
j--;
arr[i] = arr[j];
a[i] = a[j];
while(i<j && arr[i] <= temp)
i++;
arr[j] = arr[i];
a[j] = a[i];
}
arr[i] = temp;
a[i] = t;
quickSort(arr,a,begin,i-1);
quickSort(arr,a,i+1,end);
}
else
return;
}
int main(){
int t;
int k;
while(cin >> n >> ll >>rr)
{
t = 0;k = 0;
for(int i = 0; i < n; i++)
{
int a, b;
cin >> a >> b;
if(a < 0)a = 0;
if(b < 0)b = 0;
if(a < ll)a = ll;
if(b > rr)b = rr;
if(a > rr)a = b = 0;
if( a - b == 0)
{
continue;
}
else
{
l[k] = a;
r[k] = b;
//cout << "--" << l[k] << ' ' << r[k] << endl;
k++;
}
}
n = k;
//sorted();
quickSort(l,r,0,n-1);
//for(int i = 0; i < n; i++)cout << "---" <<l[i]<<' '<< r[i] << endl;
int nr = r[0];
sl = l[0];
for(int i = 0; sr != rr||sl != ll; i++)
{
sr = nr;
t++;
//cout << '+' << sr <<endl;
int dis = sr;
for(int j = 0; l[j] <= sr&&j < n; j++)
{
if(r[j] > sr)
{
nr = r[j];
}
}
if(t > n){
t = -1;
break;
}
}
if(t == 0)t = -1;
cout << t << endl;
}
return 0;
}
```
by Edwardblue @ 2021-05-16 22:27:00
贪心
by Ctjer @ 2021-05-16 22:27:06
bdfs请
by Union_of_Britain @ 2021-05-16 22:29:24
您的复杂度显然是 $O(n^2)$,无法通过本题
by 日居月诸 @ 2021-05-16 23:00:41