Cod sursa(job #3195640)

Utilizator vladimir.gavris.1Gavris Mihai Vladimir vladimir.gavris.1 Data 21 ianuarie 2024 13:29:46
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#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;
}