Cod sursa(job #1982858)

Utilizator ivan.tudorIvan Tudor ivan.tudor Data 20 mai 2017 13:58:09
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include<cstdio>
using namespace std;
int v[100005],d[100005],rez[100005];
int main()
{
    FILE*fin,*fout;
    fin=fopen("scmax.in","r");
    fout=fopen("scmax.out","w");
    int n,i,j,maxi,poz;
    fscanf(fin,"%d",&n);
    for(i=1;i<=n;i++){
      fscanf(fin,"%d",&v[i]);
    }
    for(i=1;i<=n;i++){
      maxi=1;
      for(j=1;j<i;j++){
        if(v[j]<v[i])
          if(maxi<d[j]+1)
            maxi=d[j]+1;
      }
      d[i]=maxi;
    }
    maxi=-1;
    for(i=1;i<=n;i++){
      if(d[i]>maxi){
        poz=i;
        maxi=d[i];
      }
    }
    fprintf(fout,"%d\n",maxi);
    int elemare=v[poz];
    int cmaxi=maxi;
    rez[maxi--]=elemare;
    for(i=poz;i>0 && maxi>0;i--){
      if(v[i]<elemare && d[i]==maxi){
        elemare=v[i];
        rez[maxi--]=v[i];
      }
    }
    for(i=1;i<=cmaxi;i++)
      fprintf(fout,"%d ",rez[i]);
    return 0;
}