Pagini recente » Cod sursa (job #2343459) | Cod sursa (job #191380) | Cod sursa (job #308461) | Cod sursa (job #975913) | Cod sursa (job #1691727)
# include <stdio.h>
# include <stdlib.h>
# define MAX_N 1000000
int l[MAX_N + 1];
int src( int val, int * v, int len ) {
int pos, pas;
pos = -1;
for ( pas = 30; pas >= 0; pas -- ) {
if ( pos + ( 1 << pas ) < len && v[pos + ( 1 << pas )] < val )
pos += ( 1 << pas );
}
return pos;
}
int main() {
FILE *fin = fopen( "scmax.in", "r" ), *fout = fopen( "scmax.out", "w" );
int n, m, i, j, nr;
fscanf( fin, "%d", &n );
m = 1;
for ( i = 0; i < n; i ++ ) {
fscanf( fin, "%d", &nr );
j = src( nr, l, m );
l[j + 1] = nr;
m += ( j + 1 == m );
}
fprintf( fout, "%d\n", m - 1 );
for ( i = 1; i < m; i ++ )
fprintf( fout, "%d ", l[i] );
fclose( fin );
fclose( fout );
return 0;
}