Cod sursa(job #221265)

Utilizator perticas_catalinperticas catalin perticas_catalin Data 15 noiembrie 2008 13:15:11
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<stdio.h>
FILE*fin=fopen("scmax.in","r");
FILE*fout=fopen("scmax.out","w");
int s[100001],n,t[100001],sol[2][100001];
int main()
{
  int i,f,max,j;
  fscanf(fin,"%d",&n);
  for(i=1;i<=n;i++)
    fscanf(fin,"%d",&s[i]);
  fclose(fin);
  s[0]=0;
  sol[0][0]=0;
  for(i=1;i<=n;i++)
  {
    max=-1;
    for(j=0;j<i;j++)
      if(s[j]<s[i]&&sol[0][j]>max)
      {
	max=sol[0][j];
	f=j;
      }
    sol[0][j]=max+1;
    sol[1][j]=f;
  }
  max=0;
  for(i=1;i<=n;i++)
    if(sol[0][i]>max)
    {
      max=sol[0][i];
      f=i;
    }
  for(i=1;i<=max;i++)
  {
    t[i]=f;
    f=sol[1][f];
  }
  fprintf(fout,"%d\n",max);
  for(i=max;i>=1;i--)
    fprintf(fout,"%d ",s[t[i]]);
  fclose(fout);
  return 0;
}