Cod sursa(job #863547)

Utilizator alex45meOlaru Alex alex45me Data 23 ianuarie 2013 21:49:54
Problema Subsir crescator maximal Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <stdio.h>

using namespace std;


FILE *f=fopen("scmax.in","r");
FILE *g=fopen("scmax.out","w");

 int b[100005],p[100005],a[100005],v[100005],mx,mx1,i,j,ok,n,k;


int main()
{
      fscanf(f,"%d",&n);
      for (i=1;i<=n;i++)
           fscanf(f,"%d",&v[i]);
      a[n]=1;
      for (i=n-1;i>=1;i--){
          ok=0;
          mx1=0;
          a[i]=1;
           for (j=i+1;j<=n;j++)
               if (v[j]>v[i] && a[j]+1>a[i])
                 {
                   a[i]=a[j]+1;
                   ok=j;
                 }

            p[a[ok]-1]=v[ok];
          if (a[i]>mx) { mx=a[i];k=i;for (j=1;j<=mx-1;j++) b[j]=p[j];}
      }
      fprintf(g,"%d\n",mx);
      fprintf(g,"%d ",v[k]);
      for (i=mx-1;i>=1;i--)
          fprintf(g,"%d ",b[i]);

     fclose(g);
	return 0;
}