Cod sursa(job #392893)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 8 februarie 2010 15:50:29
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include<stdio.h>
#define dim 50000

int a[dim],b[dim],c[dim],n,max,el;
void read()
{
     scanf("%d",&n);
     for(int i=1;i<=n;i++)
     scanf("%d",&a[i]);
}
void solve()
{
     for(int i=1;i<=n;i++)
     {
             for(int k=1;k<i;k++)
             {
                     if(a[k]<a[i] && c[k]>=c[i])
                     {
                                  c[i]=c[k]+1;
                                  b[i]=k;
                                  if(max<c[i])
                                  {
                                              max=c[i];
                                              el=i;           
                                  }
                     }
             }
             }
}
void afis()
{
     printf("%d\n",c[el]+1);
     int i=1;
     while(c[el])
     {
                 c[i]=a[el];
                 i++;
                 el=b[el];
                 }
     c[i]=a[el];
     for( i-=1  ; i>0;i--)
     printf("%d ",c[i]);
}
int main ()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    read();
    solve();
    afis();
    return 0;

}