Cod sursa(job #1118947)

Utilizator Juve45UAIC Alexandru Ionita Juve45 Data 24 februarie 2014 14:00:05
Problema Subsir crescator maximal Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <cstdio>

#define dmax 100001

using namespace std;

int a[dmax], sol[dmax], n, poz[dmax], s;

void read()
{
    freopen("scmax.in", "r", stdin);
    freopen("scmax.out", "w", stdout);

    scanf("%i", &n);
    for(int i=1;i<=n;i++)
    {
        scanf("%i", &a[i]);
    }

}

void solve()
{
    //for(int i=1;i<=n;i++)
    //sol[i]=1;
    for(int i=2;i<=n;i++)
    {
        int amax=1;
        for(int j=1;j<i;j++)
        if(a[j]<a[i] && sol[j]+1>amax)
            amax=sol[j]+1, poz[i]=j;
if(amax>sol[s])
s=i;

            sol[i]=amax;
    }
}


int main()
{
    read();

    solve();
    printf("%i\n", sol[s]);
    int i=s;
    while(i!=0)
    {
        printf("%i ", a[i]);
        i=poz[i];

    }

    return 0;
}