提交时间:2023-04-08 09:34:17

运行 ID: 73645

/* * __----~~~~~~~~~~~------___ * . . ~~//====...... __--~ ~~ * -. \_|// |||\\ ~~~~~~::::... /~ * ___-==_ _-~o~ \/ ||| \\ _/~~- * __---~~~.==~||\=_ -_--~/_-~|- |\\ \\ _/~ * _-~~ .=~ | \\-_ '-~7 /- / || \ / * .~ .~ | \\ -_ / /- / || \ / * / ____ / | \\ ~-_/ /|- _/ .|| \ / * |~~ ~~|--~~~~--_ \ ~==-/ | \~--===~~ .\ * ' ~-| /| |-~\~~ __--~~ * |-~~-_/ | | ~\_ _-~ /\ * / \ \__ \/~ \__ * _--~ _/ | .-~~____--~-/ ~~==. * ((->/~ '.|||' -_| ~~-/ , . _|| * -_ ~\ ~~---l__i__i__i--~~_/ * _-~-__ ~) \--______________--~~ * //.-~~~-~_--~- |-------~~~~~~~~ * //.-~~~--\ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * * \|/ */ #define itn int #include<stdio.h> #include<iostream> #include<stack> #include<algorithm> using namespace std; const int N=1e5+10; inline int read(char ch=getchar(),int n=0,int m=1) { while(ch<'0' or ch>'9') { if(ch=='-')m=-1; ch=getchar(); } while(ch>='0' and ch<='9')n=(n<<3)+(n<<1)+ch-'0',ch=getchar(); return n*m; } ostream& operator <<(ostream& o,__uint128_t &a) { __uint128_t x=a; stack<int> s; while(x)s.push(x%10),x/=10; while(!s.empty())o<<s.top(),s.pop(); return o; } int n=read(),ans; struct node { int a,b,x; }a[N]; bool cmp(node n,node m) { return n.a<m.a; } signed main() { for(int i=1;i<=n;i++)a[i].a=read(),a[i].b=read(),a[i].x=1; sort(a+1,a+1+n,cmp); for(itn i=n-1;i>0;i--) { ans=0; for(int j=i+1;j<=n;j++) if(a[i].b<a[j].b and a[j].x>ans and a[i].a<a[j].a)ans=a[j].x; a[i].x=ans+1; } ans=a[1].x; for(int i=1;i<=n;i++)ans=max(ans,a[i].x); cout<<ans; return 0; }