链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
boss统计出了每个人在实验室的时间表,希望你能根据统计表计算出实验室最多有多少人。
时间表有n行,每行有两个数,分别表示从哪天开始就一直在实验室,以及从哪天开始离开实验室。
输入描述:
第一行一个正整数 n,表示统计表的行数。接下来n行,每行两个正整数x,y,x表示从哪天开始就在实验室(包括x天),y表示从哪天开始离开实验室(y天一开始就离开实验室了)。
1≤n≤1×1061 \leq n \leq 1 \times 10^{6}1≤n≤1×106
1≤x,y≤1×1091 \leq x,y \leq 1 \times 10^{9}1≤x,y≤1×109
输出描述:
输出一个整数表示实验室最多有多少人。
示例1
输入
4
1 2
2 5
3 5
4 5
输出
3
#include<iostream>
#include<algorithm>
using namespace std;
const int N =1e6+5;
struct node{
int start;
int end;
}a[N];
int x,y;
bool cmp(node a,node b){
return a.end<b.end;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++)
scanf("%d %d",&a[i].start,&a[i].end);
sort(a,a+n,cmp);
int cnt=1,res=0,l=0,r=l+1;
while(l<n && r<n){
while(a[l].end<=a[r].start && l<=r){
cnt--;
l++;
res=max(cnt,res);
}
cnt++;
r++;
res=max(cnt,res);
}
cout<<res<<endl;
return 0;
}