Cod sursa(job #177392)

Utilizator firewizardLucian Dobre firewizard Data 12 aprilie 2008 20:58:39
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <stdio.h>
FILE *f1,*f2;
long i,j,a[100000],b[100000],t[100000],n,max1,max2,nr;
int main()
{
    f1=fopen("scmax.in","r");
    f2=fopen("scmax.out","w");
    fscanf(f1,"%d",&n);
    b[n]=1;
    for(i=1;i<=n;i++)
       {fscanf(f1,"%d",&a[i]);t[i]=-1;}
    for(i=n-1;i>=1;i--)
        {
        for(j=i+1;j<=n;j++)
        if(a[i]<a[j]&&b[i]<b[j]+1)
           {
           b[i]=b[j]+1;
           t[i]=j;
           if(b[i]>max1){max1=b[i];max2=i;}
           }
        if(b[i]==0)b[i]++;
        }
nr=max1;
fprintf(f2,"%d\n",nr);
fprintf(f2,"%d ",a[max2]);
for(i=1;i<=nr-1;i++)
{fprintf(f2,"%d ",a[t[max2]]);
max2=t[max2];}

/*for(i=1;i<=n;i++)
fprintf(f2,"%d ",a[i]);
fprintf(f2,"\n");
for(i=1;i<=n;i++)
fprintf(f2,"%d ",b[i]);
fprintf(f2,"\n");
for(i=1;i<=n;i++)
fprintf(f2,"%d ",t[i]);
fprintf(f2,"\n");*/
fclose(f1);
fclose(f2);    
}