Cod sursa(job #929859)

Utilizator cldmeClaudiu Ion cldme Data 27 martie 2013 12:16:59
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
using namespace std;
int const N=100001;
int v[N],lung[N],pred[N];

void subsir(int p)
{
    if(pred[p]!=0)
        subsir(pred[p]);
    printf("%d ",v[p]);
}

int main()
{
    int i,j,n,poz,max=0;
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%d",&v[i]);
    for(i=1;i<=n;i++)
    {
        lung[i]=0;
        for(j=1;j<=i;j++)
            if(v[j]<v[i] && lung[j]>lung[i])
            {
                lung[i]=lung[j];
                pred[i]=j;
            }
        lung[i]++;
    }
    for(i=1;i<=n;i++)
        if(lung[i]>max)
        {
            max=lung[i];
            poz=i;
        }
    printf("%d\n",max);
    subsir(poz);
    return 0;
}