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.
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).
Print the maximal number of orders that can be accepted.
2
7 11
4 7
1
5
1 2
2 3
3 4
4 5
5 6
3
6
4 8
1 5
4 7
2 5
1 3
6 8
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\n",ans); 27 return 0; 28 }