Restaurant (背包问题)

来源:互联网 发布:网易镜像站下载linux 编辑:程序博客网 时间:2024/06/14 07:17

点击题目打开链接

                                    Restaurant


A restaurant received n orders for the rental. Each rental order reserve the restaurant for a continuous period of time, thei-th order is characterized by two time values — the start timeli and the finish timeri (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 followingn lines contain integer values li and ri each (1 ≤ li ≤ ri ≤ 109).

Output

Print the maximal number of orders that can be accepted.

Example
Input
27 114 7
Output
1
Input
51 22 33 44 55 6
Output
3
Input
64 81 54 72 51 36 8
Output
2
题解:这是背包问题,直接做就可以

下面是我的代码:

#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<cstdlib>#include<iostream>using namespace std;struct P{int star;int endd;}num[900000];bool cmp(P a,P b){return a.endd<b.endd;}int main(){int n,k,p;while(scanf("%d",&n)!=EOF){k=1;for(int i=0;i<n;i++){scanf("%d%d",&num[i].star,&num[i].endd);}sort(num,num+n,cmp);p=num[0].endd;for(int i=1;i<n;i++){if(num[i].star>p){k++;p=num[i].endd;}}printf("%d\n",k);}return 0;}





原创粉丝点击