输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n<=100),表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。n=0表示输入结束,不做处理。
Output对于每个测试实例,输出能完整看到的电视节目的个数,每个测试实例的输出占一行。Sample Input
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
Sample Output
5
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<set> #include<vector> #include<stack> #include<queue> #include<algorithm> #include<cstdio> #include<algorithm> #include<functional> #include<sstream> #define maxn 102 using namespace std; struct Node { int l, r; } arr[maxn]; bool cmp(Node a, Node b) { return a.r < b.r; } int main() { int n, i, ans, flag; while (scanf("%d", &n), n) { for (i = 0; i < n; ++i) scanf("%d%d", &arr[i].l, &arr[i].r); sort(arr, arr + n, cmp); flag = arr[0].r; ans = 1; for (i = 1; i < n; ++i) if (arr[i].l >= flag) { ++ans; flag = arr[i].r; } printf("%d\n", ans); } return 0; }
时间: 2024-10-11 19:45:57