科学讨论会议常常可分为几个不同的部分。比如,有的是讨论计算的,有的是讨论数据压缩的等等。为了节省时间,几个不同的部分往往同时举行,以便有更多时间举行宴会,喝茶,非正式讨论。并且,不同的部分都可能有精彩的报告会。
给出所有报告会的时间安排表,要求你求出最多能够参加多少场报告会。
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;
}