提交时间:2022-07-19 11:59:30

运行 ID: 52359

#include <bits/stdc++.h> using namespace std; const int N=5e5+5; int n; int dp[N]; struct G { int l,r; } t[N]; bool cmp(G a,G b) { if(a.l==a.r) return a.r>b.r; return a.l<b.l; } int f(int a,int b) { if(a>b) return a; return b; } int ans; int main() { scanf("%d",&n); register int R; for(register int i=1; i<=n; i++) scanf("%d%d",&t[i].l,&t[i].r); sort(t+1,t+n+1,cmp); for(register int i=1; i<=n; i++) { dp[i]=1; R=t[i].r; for(register int j=1; j<i; j++) { if(R<=t[j].r) { dp[i]=f(dp[i],dp[j]+1); } } ans=f(ans,dp[i]); } printf("%d\n",ans); return 0; }