Cod sursa(job #2627550)

Utilizator euyoTukanul euyo Data 11 iunie 2020 12:33:16
Problema Subsir crescator maximal Scor 10
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#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;
}