Cod sursa(job #873210)

Utilizator macajouMaca George macajou Data 6 februarie 2013 22:42:22
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>

int a[50],lg[50],max,imax,n,came_from[50];

void rez()
{
    int i,j,maxc;
    for(i=n-1;i>0;i--)
        {
            maxc=0;
            for(j=i+1;j<=n;j++)
                if(lg[j]>maxc && a[j]>a[i])
                   {
                       lg[i]=lg[j]+1;
                       came_from[i]=j;
                       maxc=lg[i];
                   }
            if(maxc>max)
               max=maxc,imax=i;
        }
}

void drum()
{
    int i=came_from[imax];
    while(i<=n && i)
         {
             printf("%d ",a[i]);
             i=came_from[i];
         }

}

int main()
{

    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);

    int i;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%d",&a[i]);
    lg[n]=1;
    rez();
    printf("%d\n%d ",max,a[imax]);
    drum();

    return 0;
}