提交时间:2022-07-19 11:51:25
运行 ID: 52266
#include <algorithm> #include <iostream> #include <cstdio> #include <queue> using namespace std; const int MAXN=5E5+10; int n,m,ans; int tot[MAXN],f[MAXN]; bool used[MAXN]; struct STRING { long long l,r; int id; }a[MAXN]; bool cmp2(STRING x,STRING y) { long long len1,len2; len1=x.r-x.l+1,len2=y.r-y.l+1; return len1<len2; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%lld%lld",&a[i].l,&a[i].r); } sort(a+1,a+n+1,cmp2); for(int i=1;i<=n;i++) { f[i]=1; int res=0; for(int j=1;j<i;j++) { if(a[i].l<=a[j].l&&a[j].r<=a[i].r&&!used[j]) { used[j]=true; res=max(f[j],res); } } f[i]+=res; } for(int i=1;i<=n;i++) ans=max(ans,f[i]); printf("%d\n",ans); return 0; }