Cod sursa(job #1378767)

Utilizator Alex1234Alexandru Posea Alex1234 Data 6 martie 2015 14:11:12
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <stdio.h>
using namespace std;
long long n,v[10000000],t[10000000],l[1000000],m,p,s[100000];
int main()
{
    freopen ("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    scanf("%d",&n);
    for(int i=1; i<=n; i++)
    {
        scanf("%d",&v[i]);
    }
    int u,u1;
    l[1]=1;
    t[1]=0;
    for(int i=2; i<=n; i++)
    {
        l[i]=1;
        t[i]=0;
        for(int j=1; j<=i; j++)
        {
            if(v[j]<v[i]&&l[j]+1>l[i])
            {
                l[i]=l[j]+1;
                t[i]=j;
                if(m<l[i])
                {
                    m=l[i];
                    p=i;
                }
            }
        }
    }
    int i;
    i=p;
    u=0;
    while(i>0)
    {
        s[++u]=v[i];
        i=t[i];
    }
    printf("%d\n",u);
    for(int i=u;i>=1;i--)
        printf("%d ",s[i]);
    return 0;
}