Cod sursa(job #2206280)

Utilizator YouDontNeedMyNameJurcut Paul YouDontNeedMyName Data 22 mai 2018 09:28:17
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>
#define N_MAX 100005
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int v[N_MAX],p,poz[N_MAX],n,h,lg[N_MAX];
void programare_dinamica()
{
    lg[n]=1;
    p=n;
    for(int i=n-1; i>=1; i--)
    {
        lg[i]=1;
        for(int j=i+1; j<=n; j++)
        {
            if(v[i]<v[j] && lg[i]<lg[j]+1)
            {
                lg[i]=lg[j]+1;
                poz[i]=j;
            }
        }
        if(lg[i]>h)
        {
            h=lg[i];
            p=i;
        }
    }
}
void afis()
{
    out << lg[p] << '\n';
    while(p)
    {
        out << v[p] << ' ';
        p=poz[p];
    }
}
int main()
{
    in >> n;
    for(int i=1; i<=n; i++)
    {
        in >> v[i];
    }
    programare_dinamica();
    afis();
    return 0;
}