#include #define REP(i,n,N) for(int i=(n);i<(int)N;i++) #define p(s) cout<<(s)<>N; int a[100010]; REP(i,0,N) cin>>a[i]; vector vt(N,inf); REP(i,0,N) *lower_bound(vt.begin(),vt.end(),a[i])=a[i]; p(vt.end()-lower_bound(vt.begin(),vt.end(),inf)); return 0; }