Cod sursa(job #2899364)

Utilizator Alex_HossuHossu Alexandru Alex_Hossu Data 8 mai 2022 16:40:51
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <stdio.h>
 
int v[100000];
int len[100000];
int rMax[100000];
int prev[100000];
 
int main() {
  FILE *fin, *fout;
  int n;
  int i, j, k;
  int indM, indA;
  int res, best;
 
  fin = fopen("scmax.in", "r");
 
  fscanf(fin, "%d", &n);
  for (i = 0; i < n; i++)
    fscanf(fin, "%d", &v[i]);
 
  fclose(fin);

  /**
    10
    5 1 29 8 2 3 12 1 1 2
      -      1 2 3
    1 2 3 12

  */
  
  res = 0;
  for (i = 0; i < n; i++) {
    len[i] = 1;
    indA = 0;
    prev[i] = j;
    for(j = 0; j < i; j++) {
      if (v[i] > v[j] && len[i] < len[j] + 1) {
        len[i] = len[j] + 1;
        prev[i] = j;
      }
    }
    
    if (res < len[i]) {
      best = i;
      res = len[i];
    }
  }
 
  fout = fopen("scmax.out", "w");

  for (i = res - 1, j = best; i >= 0; i--, j = prev[j])
    rMax[i] = v[j];
 
  fprintf(fout, "%d\n", res);
  for (i = 0; i < res; i++)
    fprintf(fout, "%d ", rMax[i]);
 
  fclose(fout);
 
  return 0;
}