您的位置:首页 > 其它

Restaurant (贪心)

2016-07-21 17:21 169 查看
Restaurant

Time Limit:4000MS    Memory Limit:262144KB    64bit IO Format:%I64d
& %I64u

SubmitStatus

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 36 8


Output
2
贪心,注意开数组的范围
#include<stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
struct p1{
int Y,X;
}p[500005];
bool cmp(p1 a,p1 b)
{
return a.X<b.X;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d%d",&p[i].Y,&p[i].X);
}
sort(p,p+n,cmp);
int ans=1;
int t=p[0].X;
for(int i=1;i<n;i++){
if(p[i].Y>t){
t=p[i].X;
ans++;
}
}
printf("%d\n",ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: