提交时间:2022-07-19 12:24:23

运行 ID: 52501

#include <bits/stdc++.h> using namespace std; int n; int l[500000],r[500000]; bool b[40000][40000]; int p(int x,int y) { int sum=1; for(int i=1; i<=n; i++) { if(b[y][i]) sum=max(sum,1+p(y,i)); } return sum; } int main() { scanf("%d",&n); for(int i=1; i<=n; i++) scanf("%d %d",&l[i],&r[i]); for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { if(i==j) continue; if(l[i]<=l[j]&&r[i]>=r[j]) b[i][j]=1; else b[i][j]=0; } } int Max=0; for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { if(b[i][j]) Max=max(p(i,j)+1,Max); } } cout<<Max<<endl; return 0; }