题目背景
快 noip 了,yyy 很紧张!
题目描述
现在各大 oj 上有 nn 个比赛,每个比赛的开始、结束的时间点是知道的。
yyy 认为,参加越多的比赛,noip 就能考的越好(假的)。
所以,他想知道他最多能参加几个比赛。
由于 yyy 是蒟蒻,如果要参加一个比赛必须善始善终,而且不能同时参加 22 个及以上的比赛。
输入格式
第一行是一个整数 nn ,接下来 nn 行每行是 22 个整数 a_{i},b_{i}ai,bi ( a_{i}<b_{i}ai<bi ),表示比赛开始、结束的时间。
输出格式
一个整数最多参加的比赛数目。
输入输出样例
输入 #1复制
3 0 2 2 4 1 3
输出 #1复制
2
说明/提示
对于 20\%20% 的数据, n \le 10n≤10。
对于 50\%50% 的数据, n \le 10^3n≤103。
对于 70\%70% 的数据, n \le 10^{5}n≤105。
对于 100\%100% 的数据, 1\le n \le 10^{6}1≤n≤106 , 0 \le a_{i} < b_{i} \le 10^60≤ai<bi≤106。
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cstdio>
#include<stdio.h>
using namespace std;
struct Class
{
int begin;
int end;
}a[1000005];
bool compare(Class x, Class y) {
return x.end < y.end;
}
int main() {
int n;
int count = 0;
int preend = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d %d", &a[i].begin, &a[i].end);
}
sort(a, a + n, compare);
for (int i = 0; i < n; i++) {
if (preend <= a[i].begin) {
count++;
preend = a[i].end;
}
}
printf("%d", count);
}