录制节目
内存限制: 256 Mb时间限制: 1000 ms
题目描述
电视里将要播放 𝑛n 个节目,第 𝑖i 个节目从时刻 𝑠𝑖si 开始,到 𝑡𝑖ti 结束,没有回放。小爱有两台录像机,每台录像机在工作的时候只能录一个节目,小爱最多可以录下多少完整的节目呢?
如果某节目的结束时间等于另一个节目的开始时间,那么这两个节目是可以用一台录像机的。
输入格式
第一行:单个整数 𝑛n
第二行到第 𝑛+1n+1行:第 𝑖+1i+1 行有两个整数 𝑠𝑖si 和 𝑡𝑖ti
输出格式
单个整数:表示最大可以录制的节目数量。
数据范围
- 对于 30%30% 的数据,𝑛≤500n≤500
- 对于 60%60% 的数据,𝑛≤2000n≤2000
- 对于 100%100% 的数据,1≤𝑛≤200,0001≤n≤200,000
- 0≤𝑠𝑖,𝑡𝑖≤1,000,000,0000≤si,ti≤1,000,000,000
样例数据
输入:
5
1 5
2 6
8 10
3 9
5 10
输出:
4
#include<bits/stdc++.h>
using namespace std;
struct node{
int st,ed;
}a[200010];
bool cmp(node a,node b){
return a.ed<b.ed;
}
int n,ans,time1,time2;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i].st>>a[i].ed;
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++){
if(time1<time2){
swap(time1,time2);
}
if(a[i].st>=time1){
time1=a[i].ed;
ans++;
}else if(a[i].st>=time2){
time2=a[i].ed;
ans++;
}
}
cout<<ans;
return 0;
}