P2782 50pts
#include<bits/stdc++.h>
using namespace std;
int n,f[200000],ans,len;
struct node{
int north,south;
}city[200000];
bool cmp(node x,node y)
{
return x.north<y.north;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>city[i].north>>city[i].south;
}
sort(city,city+n+1,cmp);
for(int i=1;i<=n;i++){
int tmp=city[i].south;
len=lower_bound(f+1,f+len+1,tmp)-f;
f[len]=tmp;
ans=max(ans,len);
}
cout<<ans;
return 0;
}