Cod sursa(job #1120408)

Utilizator Juve45UAIC Alexandru Ionita Juve45 Data 24 februarie 2014 23:54:52
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <cstdio>
#include <vector>
#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=1;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;
    vector <int> solf;
    while(i!=0)
    {
        //printf("%i ", a[i]);
        solf.push_back(a[i]);
        i=poz[i];

    }
    int g=solf.size();
    for(int i=g-1;i>=0;i--)
    {
        printf("%i ", solf[i]);
    }
printf("\n");
    return 0;
}