#include int* leeEntrada( int *n ) { FILE *inn = fopen( "input.txt", "rt" ); int i; fscanf( inn, "%d\n", n ); int *diametros = new int[ *n ]; for( i = 0; i < *n; i++ ) fscanf( inn, "%d", &diametros[i] ); fclose( inn ); return diametros; } int calculaMax( int n, int *diametros ) { int *maximo = new int[n]; int i, j; int maximoActual = 1; for( i = 0; i < n; i++ ) { maximo[i] = 1; for( j = 0; j < i; j++ ) if( diametros[i] > diametros[j] ) //Cabe? if( maximo[i] < maximo[j] + 1 ) //Le cabrían más que lo mejor hecho hasta ahora? maximo[i] = maximo[j] + 1; if( maximo[i] > maximoActual ) maximoActual = maximo[i]; } delete[] maximo; return maximoActual; } void escribeSalida( int total ) { FILE *outt = fopen( "output.txt", "wt" ); fprintf( outt, "%d", total ); fclose( outt ); } int main() { int n; int *diametros = leeEntrada( &n ); escribeSalida( calculaMax( n, diametros ) ); delete[] diametros; return 0; }