Cod sursa(job #202138)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 6 august 2008 12:27:59
Problema Subsir crescator maximal Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
#define N 1000
long scmax[N];
long nivel[N];
long tata[N];
long n;
FILE *fin,*fout;
void pr(long i)
{if(tata[i])
 {pr(tata[i]);}
 fprintf(fout,"%ld ",scmax[i]);
}
int main ()
{fin=fopen("scmax.in","r");
 fout=fopen("scmax.out","w");
 long i,j,nt,nmax,flag,k; //nivel maxim

 fscanf(fin,"%ld",&n);
 for (i=1;i<=n;i++)
 {fscanf(fin,"%ld",&scmax[i]);}
 
 nivel[1]=1;
 for (i=2,nmax=1;i<=n;i++)
 {nivel[i]=1;//in caz ca nu se intampla nimic ramane 1
  for(k=nmax;k>=1;k--)
  {flag=1;
   for (j=i-1;j>=1;j--)
   {if(nivel[j]==k&&scmax[j]<scmax[i])
    {nivel[i]=k+1;
     nmax=k+1;
     tata[i]=j;
     flag=0;break;
     
    }
   }
   if(flag==0){break;}
  }
 }
 for (i=0;i<=n;i++)
 {if(nivel[i]==nmax)
  {fprintf(fout,"%ld\n",nmax);
   pr(i);
  }
 }
 fclose(fout);
 return 0;
}