Description
小张经常为了事情太多安排不开而苦恼。现在他手头有
项任务,每项任务都有一个开始时间
和结束时间
。要想完成一个任务必须从开始时间做到结束时间,并且同一时间小张只能进行一项任务。
小张想知道他最多可以完成几项任务。
Input
第一行一个整数
,表示小张手头任务的个数。
接下来
行,每行两个整数
,表示任务的开始时间和结束时间。
Output
一行一个整数,表示小张最多可以完成几项任务。
代码如下:
#include<stdio.h>
#include<stdlib.h>
int value;
struct Record{
int begin;
int end;
};struct Record Records[300010];
int compare(const void* p1,const void* p2)
{
const struct Record*a=(const struct Record*)p1;
const struct Record*b=(const struct Record*)p2;
if(a->end < b->end) value=-1;
else if(a->end > b->end) value=1;
else value=0;
return value;
}
int main()
{
long long int n,i,EM;
int count=1;
scanf("%lld",&n);
for(i=0;i<n;i++) scanf("%lld %lld",&Records[i].begin,&Records[i].end);
qsort(Records,n,sizeof(struct Record),compare);
EM=Records[0].end;
for(i=1;i<n;i++)
if(EM<=Records[i].begin)
{
count++;
EM=Records[i].end;
}
printf("%d\n",count);
}