科学讨论会议常常可分为几个不同的部分。比如,有的是讨论计算的,有的是讨论数据压缩的等等。为了节省时间,几个不同的部分往往同时举行,以便有更多时间举行宴会,喝茶,非正式讨论。并且,不同的部分都可能有精彩的报告会。
给出所有报告会的时间安排表,要求你求出最多能够参加多少场报告会。
input:
第一行为报告会的总数N, 1 <= N <= 100000。接下来有N行,每一行有两个整数 T_s 和 T_e ,一空格隔开 (1 <= T_s < T_e <= 30000),报告会的开始时间和结束时间,单位为分钟。
output:
你应该输出能够参加的报告会的最大数目。不能参加同时举行的报告会,并且两场报告会之间至少要有一分钟的时间差。比如,如果一场报告会的结束时间在15,那么能够参加的下一场报告会的开始时间应该在16或更后的时间。
input:
5
3 4
1 5
6 7
4 5
1 3
output:
3
【参考程序】:
#include<iostream>
using namespace std;
struct node
{
    int x,y;
} a[100010];
int n;
int cmp(const void *s,const void *t)
{
    node i=*(node *)s,j=*(node *)t;
    if (i.y!=j.y) return i.y-j.y;
    else return i.x-j.x;
}
int main()
{
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
        scanf("%d%d",&a[i].x,&a[i].y);
    qsort(a+1,n,sizeof(node),cmp);
    int ans=1,a1,b1;
    a1=a[1].x;b1=a[1].y;
    for (int i=2;i<=n;i++)
        if (b1<a[i].x)
        {
            ans++;
            a1=a[i].x;b1=a[i].y;
        }
    printf("%d\n",ans);
    return 0;
}