Restaurant Testing Round #12 B

q923714892發表於2020-04-06
Description
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 Input
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

#include<stdio.h>
#include<algorithm>
using namespace std;
struct node
{
	int s;
	int l;
}t[1000000];
bool cmd(node x,node y)
{
    return x.l<y.l;
}
int main()
{
	int a,i,sum,k;
	while(scanf("%d",&a)!=EOF)
	{
		for(i=0;i<a;i++)
		{
			scanf("%d%d",&t[i].s,&t[i].l);
		}
		sort(t,t+a,cmd);
		int sum=t[0].l;
		int k=1;
		for(i=0;i<a;i++)
		{
			if(t[i].s>sum)
			{
				sum=t[i].l;
			k++;
			}
			
		}
		printf("%d\n",k);
	}
	return 0;
}


相關文章