题目描述
现在各大oj上有n个比赛,每个比赛的开始、结束的时间点是知道的。
小A同学认为,参加越多的比赛,noip就能考的越好。
所以,他想知道他最多能参加几个比赛。
注意区间存在 ai=bi 的情况。此类区间持续时间为0,一定可选(当然也要保证与其它区间不冲突)。
输入格式 第一行是一个整数n,接下来n行每行是2个整数ai,bi( ai≤bi ),表示比赛开始、结束的时间。
输出格式 一个整数,为最多参加的比赛数目 (有那么亿点像凌乱的yyy) 本蒟蒻的代码
#include <bits/stdc++.h>
using namespace std;
struct node{
long long b;
long long e;
}a[1000007] = {{-1,-1}};
bool flag;
long long pos;
bool cmp(node x,node y){
return x.e<y.e;
}
int main(){
long long n;
bool flag= 1;
cin >> n;
for(long long i=1;i<=n;++i){
cin >> a[i].b >> a[i].e;
}
long long cnt = 0;
sort(a+1,a+n+1,cmp);
for(long long i = 1;i<=n;++i){
if(a[i].b == a[i].e) {
if(a[i].b>=pos){
cnt++;
}
pos = a[i].e;
continue;
}
if(a[i].b>=pos){
pos = a[i].e;
cnt++;
}
}
cout << cnt;
}