提交时间:2022-07-19 12:41:27

运行 ID: 52535

#include<bits/stdc++.h> using namespace std; priority_queue<int,vector<int>,less<int> >q; #define int long long const int N =1e6+10; int n,cnt; struct node { int l; int r; }a[N]; bool cmp(node a,node b) { if(a.l<b.l) return a.l<b.l; if(a.l==b.l) return a.r>b.r; if(a.l>b.l) return a.l<b.l; } signed main() { int maxx=-INT_MAX; cin>>n; for(int i=1;i<=n;i++) cin>>a[i].l>>a[i].r; sort(a+1,a+n+1,cmp); q.push(a[1].r); cnt=1; for(int i=2;i<=n;i++) { if(i==2&&a[i].r>a[i-1].r) cnt--; if(a[i].r<=a[i-1].r) { cnt++; q.push(a[i].r); } else { int k=q.top(); if(k<a[i].r) { int sum=0; while(!q.empty()) { q.pop(); sum++; } cnt=0; maxx=max(maxx,sum); q.push(a[i].r); } } } int res=0; while(!q.empty()) res++,q.pop(); cout<<max(maxx,max(res,cnt))<<endl; }