Cod sursa(job #2691476)

Utilizator Ana_22Ana Petcu Ana_22 Data 28 decembrie 2020 20:29:46
Problema Subsir crescator maximal Scor 70
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <stdlib.h>
#define NMAX 100000

int v[NMAX], d[NMAX], aux[NMAX];

int main() {
    FILE *fin, *fout;
    int n, i, j, max, c;
    fin = fopen( "scmax.in", "r" );
    fscanf( fin, "%d", &n );
    max = 0;
    for( i = 0; i < n; i++ ) {
      fscanf( fin, "%d", &v[i] );
      d[i] = 1;
      for( j = 0; j < i; j++ )
        if( v[j] < v[i] && d[j] + 1 > d[i] )
          d[i] = d[j] + 1;
      if( d[i] > max )
        max = d[i];
    }
    fclose( fin );
    i = n - 1;
    for( c = max; c > 0; c-- ) {
      while( i > 0 && d[i] != c )
        i--;
      aux[c-1] = v[i];
    }
    fout = fopen( "scmax.out", "w" );
    fprintf( fout, "%d\n", max );
    for( i = 0; i < max; i++ )
      fprintf( fout, "%d ", aux[i] );
    fclose( fout );
    return 0;
}