Pagini recente » Cod sursa (job #339937) | Cod sursa (job #136731) | Cod sursa (job #179714) | Cod sursa (job #1495891) | Cod sursa (job #403496)
Cod sursa(job #403496)
#include <fstream>
using namespace std;
const char* in = "scmax.in";
const char* out = "scmax.out";
const int NMAX = 100005;
int A[NMAX], P[NMAX], cnt;
int N;
int main( void )
{
freopen ( in, "r", stdin );
freopen ( out, "w", stdout );
scanf ( "%d", &N );
int i, bl, br, bm, last;
for ( i = 1; i <= N; scanf("%d", A+i++ ) );
for ( i = 1; i <= N; ++i )
{
if ( A[i] > P[cnt] )
P[++cnt] = A[i];
else
{
for ( bl = 1, br = cnt, last = cnt; bl <= br; )
{
bm = (bl+((br-bl)>>1));
if ( P[bm] < A[i] ) bl = bm + 1;
else last = bm, br = bm - 1;
}
P[last] = A[i];
}
}
printf ( "%d\n", cnt );
return 0;
}