codeforces 597B Restaurant

B. Restaurant

 
 

A restaurant received n orders for the rental. Each rental order reserve the restaurant for a continuous period of time, the i-th order is characterized by two time values — the start time li and the finish time ri (li ≤ ri).

Restaurant management can accept and reject orders. What is the maximal number of orders the restaurant can accept?

No two accepted orders can intersect, i.e. they can't share even a moment of time. If one order ends in the moment other starts, they can't be accepted both.

Input

The first line contains integer number n (1 ≤ n ≤ 5·105) — number of orders. The following n lines contain integer values li and ri each (1 ≤ li ≤ ri ≤ 109).

Output

Print the maximal number of orders that can be accepted.

Sample test(s)
Input
2
7 11
4 7
Output
1
Input
5
1 2
2 3
3 4
4 5
5 6
Output
3
Input
6
4 8
1 5
4 7
2 5
1 3
6 8
Output
2
 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4 struct order
 5 {
 6     int l,r;
 7 }r[500005];
 8 bool cmp(order a,order b)
 9 {
10     return a.r<b.r;
11 }
12 int main()
13 {
14     int n;
15     scanf("%d",&n);
16     for(int i=0;i<n;i++)
17         scanf("%d%d",&r[i].l,&r[i].r);
18     sort(r,r+n,cmp);
19     int e=r[0].r,ans=1;
20     for(int i=1;i<n;i++)
21         if(e<r[i].l)
22         {
23             ans++;
24             e=r[i].r;
25         }
26     printf("%d
",ans);
27     return 0;
28 }
原文地址:https://www.cnblogs.com/homura/p/4988077.html