-
总时间限制:
- 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;elsereturn 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
//0int 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;
}