1 #include <iostream>
2 #include <cstdio>
3 #include <cmath>
4 #include <cstring>
5 #include <algorithm>
6 #include <queue>
7 #include <stack>
8 #include <vector>
9 using namespace std;
10 struct node
11 {
12 int x,y;
13 }a[25010];
14 bool cmp(const node &a,const node &b)
15 {
16 if(a.x==b.x)
17 return a.y>b.y;
18 return a.x<b.x;
19 }
20 int main(int argc, char *argv[])
21 {
22
23 int n,t,sum=0,end;
24 scanf("%d%d",&n,&t);
25 for(int i=0;i<n;i++)
26 scanf("%d%d",&a[i].x,&a[i].y);
27 sort(a,a+n,cmp);
28 if(a[0].x!=1)
29 {
30 printf("-1\n");
31 return 0;
32 }
33 end=a[0].y;
34 sum++;
35 int ma=end;
36 int k=1;
37 int i;
38 while(end<t)
39 {
40 for(i=k;a[i].x<=end+1;i++)
41 if(a[i].y>ma)
42 ma=a[i].y;
43
44 if(ma==end)
45 {
46 printf("-1\n");
47 return 0;
48 }
49 sum++;
50 end=ma;
51 if(end==t)
52 break;
53 k=i;
54 if(k>=n)
55 break;
56 }
57 if(end==t)
58 printf("%d\n",sum);
59 else
60 printf("-1\n");
61 return 0;
62 }#include <iostream>
63 #include <cstdio>
64 #include <cmath>
65 #include <cstring>
66 #include <algorithm>
67 #include <queue>
68 #include <stack>
69 #include <vector>
70 using namespace std;
71 struct node
72 {
73 int x,y;
74 }a[25010];
75 bool cmp(const node &a,const node &b)
76 {
77 if(a.x==b.x)
78 return a.y>b.y;
79 return a.x<b.x;
80 }
81 int main(int argc, char *argv[])
82 {
83
84 int n,t,sum=0,end;
85 scanf("%d%d",&n,&t);
86 for(int i=0;i<n;i++)
87 scanf("%d%d",&a[i].x,&a[i].y);
88 sort(a,a+n,cmp);
89 if(a[0].x!=1)
90 {
91 printf("-1\n");
92 return 0;
93 }
94 end=a[0].y;
95 sum++;
96 int ma=end;
97 int k=1;
98 int i;
99 while(end<t)
100 {
101 for(i=k;a[i].x<=end+1;i++)
102 if(a[i].y>ma)
103 ma=a[i].y;
104
105 if(ma==end)
106 {
107 printf("-1\n");
108 return 0;
109 }
110 sum++;
111 end=ma;
112 if(end==t)
113 break;
114 k=i;
115 if(k>=n)
116 break;
117 }
118 if(end==t)
119 printf("%d\n",sum);
120 else
121 printf("-1\n");
122 return 0;
123 }