Cod sursa(job #858701)

Utilizator macajouMaca George macajou Data 19 ianuarie 2013 11:28:06
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;

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;
                       maxc=lg[i];
                   }
            if(maxc>max)
               max=maxc,imax=i;
        }
}

void drum()
{
    int i;
    for(i=imax+1;i<=n && lg[imax]>0;i++)
        if(lg[i]==lg[imax]-1 && a[i]>a[imax])
           {
               printf("%d ",a[i]);
               imax=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;
}