Cod sursa(job #1696407)

Utilizator BarbumateiBarbu Matei Barbumatei Data 28 aprilie 2016 23:39:31
Problema Subsir crescator maximal Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>
#include <stdlib.h>
int v[100];
int maxim[100];
int urmatorul[100];
int main(){
  int n, i, j;;
  FILE *fin, *fout;
  fin=fopen("scmax.in", "r");
  fout=fopen("scmax.out", "w");
  fscanf(fin, "%d", &n);
  for(i=0; i<n; i++)
    fscanf(fin, "%d", &v[i]);
  maxim[n-1]=1;
  urmatorul[n-1]=-1;
  for(i=n-2; i>=0; i--){
    maxim[i]=1;
    urmatorul[i]=-1;
    for(j=i+1; j<n; j++)
      if(v[j]>v[i] && maxim[j]>=maxim[i]){
        maxim[i]=maxim[j]+1;
        urmatorul[i]=j;
      }
  }
  j=0;
  for(i=1; i<n; i++)
    if(maxim[i]>maxim[j]) j=i;
  fprintf(fout, "%d\n", maxim[j]);
  while(j!=-1){
    fprintf(fout, "%d ", v[j]);
    j=urmatorul[j];
  }
  fclose(fin);
  fclose(fout);
    return 0;
}