Cod sursa(job #202228)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 6 august 2008 23:42:53
Problema Subsir crescator maximal Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>
#define N 100001
long pnivmax[N],sir[N],tata[N]  ;
int main ()
{long n,i,j,nmax;
 FILE *fin=fopen("scmax.in","r");
 fscanf(fin,"%ld",&n)      ;
 for (i=1;i<=n;i++)
 {fscanf(fin,"%ld",&sir[i]);}
 pnivmax[1]=1;nmax=1;
 tata[1]=0 ;
 
 for (i=2;i<=n;i++)
 {for (j=nmax;j>=1;j--)
  {if(sir[pnivmax[j]]<sir[i])
   {tata[i]=pnivmax[j];
    pnivmax[j+1]=i;
    if(j+1>nmax)
    {nmax=j+1;}
    break;
   }
  }
  if(j==0)
  {pnivmax[1]=i;tata[i]=0;
  }
 }
 for (j=nmax,i=pnivmax[nmax];i;i=tata[i],j--)
 {pnivmax[j]=sir[i];}
 FILE *fout=fopen("scmax.out","w");
 fprintf(fout,"%ld\n",nmax);
 for (i=1;i<=nmax;i++)
 {fprintf(fout,"%ld ",pnivmax[i]);
 }
 return 0;
}