Pagini recente » Cod sursa (job #1771774) | Cod sursa (job #3186218) | Cod sursa (job #1392991) | Cod sursa (job #1740717) | Cod sursa (job #3195640)
#include <stdio.h>
using namespace std;
#define MAXN 100000
int array[ MAXN ], second[ MAXN ];
int max_length = 0, n;
int bsearch( int value )
{
int left, right, mid;
left = -1;
right = max_length;
while( right - left > 1 )
{
mid = ( left + right ) / 2;
if( array[ mid ] < value )
{
left = mid;
}
else
{
right = mid;
}
}
return right;
}
int main()
{
FILE *fin, *fout;
int i, element;
fin = fopen( "scmax.in", "r" );
fscanf( fin, "%d", &n );
for( i = 0; i < n; i++ )
{
fscanf( fin, "%d", &element );
int a = bsearch( element );
array[ a ] = element;
if( a == max_length )
{
max_length++;
}
}
fclose( fin );
fout = fopen( "scmax.out", "w" );
fprintf( fout, "%d\n", max_length );
for( i = 0; i < max_length; i++ )
{
fprintf( fout, "%d ", array[ i ] );
}
fclose( fout );
return 0;
}