Cod sursa(job #1333099)

Utilizator cremarencodianaCremarenco Diana cremarencodiana Data 2 februarie 2015 19:50:15
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <cstdio>

using namespace std;
int a[100010],l[100010],max,m,i,n,j,poz,p,t[100010];
int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    scanf("%d\n",&n);
    for (i=1; i<=n; i++)
       scanf("%d",&a[i]);
    l[n]=1; t[n]=-1;
    for (i=n-1; i>=1; i--)
    {
        max=0;
        p=-1;
        for (j=i+1; j<=n; j++)
           if (a[j]>a[i] && l[j]+1>l[i])
               if (l[j]>max) { max=l[j]; p=j; }


        l[i]=max+1; t[i]=p;
        if (l[i]>m) {m=l[i]; poz=i;}
    }

    printf("%d\n",m);
    while (poz!=-1)
    {
        printf("%d ",a[poz]);
        poz=t[poz];
    }
    return 0;
}