Cod sursa(job #1978254)

Utilizator CriistinaMicula Cristina Criistina Data 7 mai 2017 11:29:38
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#define Nmax 100001

using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");

int n, v[Nmax], dp[Nmax], p[Nmax], sol[Nmax], lmax, poz;

int main()
{
    f>>n;
    for(int i=1;i<=n;i++)
        f>>v[i];
    for(int i=1;i<=n;i++)
    {
        for(int k=0;k<i;k++)
        {
            if(v[k]<v[i] && dp[i]<dp[k]+1)
            {
                dp[i]=dp[k]+1;
                p[i]=k;
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
        if(lmax<dp[i])
        {
            lmax=dp[i];
            poz=i;
        }
    }
    g<<lmax<<'\n';
    int k=1;
    sol[k]=v[poz];
    while(p[poz]!=0)
    {
        sol[++k]=v[p[poz]];
        poz=p[poz];
    }
    for(int i=k;i>0;i--)
        g<<sol[i]<<" ";
    return 0;
}