- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 大学生电影节在北大举办! 这天,在北大各地放了多部电影,给定每部电影的放映时间区间,区间重叠的电影不可能同时看(端点可以重合),问李雷最多可以看多少部电影。
- 输入
- 多组数据。每组数据开头是n(n<=100),表示共n场电影。
接下来n行,每行两个整数(0到1000之间),表示一场电影的放映区间
n=0则数据结束
- 输出
- 对每组数据输出最多能看几部电影
- 样例输入
8 3 4 0 7 3 8 15 19 15 20 10 15 8 18 6 12 0
- 样例输出
3
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct Film {
int f;
int e;
};
bool operator<(const Film & t,const Film & c)//重载操作符;
{
if(t.e==c.e)
return t.f<c.f;
else
return t.e<c.e;
}
//12
//1 3
//3 4
//0 7
//3 8
//15 19
//15 20
//10 15
//8 18
//6 12
//5 10
//4 14
//2 9
//0
int main()
{
Film film[1100];
int n;
while(scanf("%d",&n)&&n!=0){
for(int i = 0;i<1100;i++)
film[i].f = film[i].e = 0;
for(int i = 0;i < n; ++i)
scanf("%d%d", &film[i].f , &film[i].e);
sort(film,film+n);
//
// for(int i = 0;i<n;i++)
// cout <<film[i].f<<" "<<film[i].e<<endl;
//
int total = 0;
int first =0;
for(int i = 0;i < n; ++i)
if( first<=film[i].f&&film[i].e <= film[n-1].e){
total++;
first = film[i].e;
}
printf("%d\n",total);
}
return 0;
}