Description
有n项工作,每项工作分别在si时间开始,在ti时间结束。对于每项工作,你都可以选择参与与否。如果选择了参与,那么自始至终都必须全程参与。此外,参与工作的时间段不能重叠(即使是开始的瞬间和结束的瞬间重叠也是不允许的)。
Input
输入包含多组测试用例,对于每组测试用例:
输入一个整数N(1 <= N <= 105)。
接着输入N行si,ti(1 <= si <= ti <= 109),分别代表每项工作的开始时间和结束时间。
Output
输出最多能参与多少项工作。每组数据后换行。
Sample Input
5
1 3
2 5
4 7
6 9
8 10
Sample Output
3
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct tim
{
int a;
int b;
}time1[100000];
int cmp(tim x,tim y)
{
return x.b<y.b;
}
int main(){
int n,i,min,min2,flag;
int a[100000],b[100000];
while(scanf("%d",&n)!=EOF){
flag=0;
for(i=0;i<n;i++){
scanf("%d %d",&time1[i].a,&time1[i].b);
}
min=0;
int sum=0;
sort(time1,time1+n,cmp);
for(int i=0;i<n;i++)
{
if(min<time1[i].a)
{
min=time1[i].b;
sum++;
}
}
printf("%d\n",sum);
}
return 0;
}