Cod sursa(job #387336)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 27 ianuarie 2010 13:03:00
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
int n,a,maxg,c[100003],v[100003],prev[100003];
char uz[100003];
int main ()
{
    int i,j;
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&v[i]);
        for(j=maxg;j>=1;j--)
            if(v[c[j]]<v[i])
                break;
        if(v[c[j+1]]>v[i] || j==maxg)
            c[j+1]=i, prev[i]=c[j];
        if(j==maxg)
            maxg++;
    }
    printf("%d\n",maxg);
    
    j=c[maxg];
    for (i=maxg;i>0;i--)
    {
        uz[j]=1;
        j=prev[j];
    }
    
    for(i=1;i<=n;i++)
        if (uz[i])
            printf("%d ",v[i]);
    printf("\n");
    return 0;
}