Pagini recente » Cod sursa (job #915807) | Cod sursa (job #3231847) | Cod sursa (job #2663830) | Cod sursa (job #1939194) | Cod sursa (job #2627550)
#include <stdio.h>
int d[100000];
int cautbin( int n, int e ) {
int st = 0, dr = n, mij;
while ( dr - st > 1 ) {
mij = (st + dr) / 2;
if ( d[mij] > e ) {
dr = mij;
} else {
st = mij;
}
}
return st;
}
int main() {
FILE *fin = fopen( "scmax.in", "r" );
FILE *fout = fopen( "scmax.out", "w" );
int n, i, a, len;
fscanf( fin, "%d%d", &n, &a );
len = 0;
d[len++] = a;
for ( i = 0; i < n; ++i ) {
fscanf( fin, "%d", &a );
if ( a > d[len - 1] ) {
d[len++] = a;
} else {
d[cautbin( len, a )] = a;
}
}
fprintf( fout, "%d\n", len );
for ( i = 0; i < len; ++i ) {
fprintf( fout, "%d ", d[i] );
}
fclose( fin );
fclose( fout );
return 0;
}