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

运行 ID: 52516

#include<bits/stdc++.h> #define N 500005 using namespace std; int n,f[N],ans; struct Block{int l,r;}; struct Block b[N]; inline bool cmp(const Block&x,const Block&y){ return (x.l^y.l)?x.l>y.l:x.r<y.r; } int main(){ scanf("%d",&n); for(int i(1);i<=n;++i) scanf("%d%d",&b[i].l,&b[i].r); sort(b+1,b+1+n,cmp); for(int i(1);i<=n;++i){ if(b[i].r>=f[ans]) f[++ans]=b[i].r; else f[upper_bound(f+1,f+1+ans,b[i].r)-f]=b[i].r; } printf("%d\n",ans); return 0; }