题目描述
sdut 大学生艺术中心每天都有n个活动申请举办,但是为了举办更多的活动,必须要放弃一些活动,求出每天最多能举办多少活动。
输入
输入包括多组输入,每组输入第一行为申请的活动数n,从第2行到n+1行,每行两个数,是每个活动的开始时间b,结束时间e;
输出
输出每天最多能举办的活动数。
示例输入
12 15 20 15 19 8 18 10 15 4 14 6 12 5 10 2 9 3 8 0 7 3 4 1 3
示例输出
5
#include <stdio.h>
#include <string.h>
struct orz
{
int b,e;
}a[1000],temp;
int main()
{
int i,j,n,p,q,x;
while(~scanf("%d",&n))
{
int count=0;
for(i=0;i<n;i++)
scanf("%d %d",&a[i].b,&a[i].e);
for(p=0;p<n-1;p++)
for(q=0;q<n-p-1;q++)
{
if(a[q].e>a[q+1].e) //按结束时间从小到大排序
{
temp=a[q];
a[q]=a[q+1];
a[q+1]=temp;
}
}
x=a[0].e;
for(j=1;j<n;j++)
{
if(a[j].b>=x) //如果开始时间等于前一个结束时间,就可以举办
{
count++;
x=a[j].e;
}
}
printf("%d\n",count+1); //+1是因为,x是从第一个结束时间开始的,那么他肯定举办了第一次
}
return 0;
}