Cod sursa(job #3196960)

Utilizator Sasha_12454Eric Paturan Sasha_12454 Data 25 ianuarie 2024 07:39:49
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in ("scmax.in");
ofstream out ("scmax.out");
const int NMAX=100005;
int n;
int v[NMAX],dp[NMAX],parent[NMAX];
int fin;
void recurs(int poz,bool ok)
{
    if(parent[poz]==-1)
        ok=true;
    if(!ok)
    {
        recurs(parent[poz],ok);
        out<<v[poz]<<" ";
    }
    else
    {
        out<<v[poz]<<" ";
    }
}
void scmax()
{
    int poz=0;
    for(int i=1; i<=n; i++)
    {
        dp[i]=1;
        parent[i]=-1;
        for(int j=1; j<i; j++)
        {
            if(v[j]<v[i])
            {
                if(dp[j]+1>dp[i])
                {
                    dp[i]=dp[j]+1;
                    parent[i]=j;

                }
            }
        }
        if(dp[i]>fin)
        {
            fin=dp[i];
            poz=i;
        }
    }
    /*for(int i=1;i<=n;i++)
        cout<<dp[i]<<" ";
    cout<<'\n';*/
    out<<fin<<'\n';
    bool ok=false;
    recurs(poz,ok);
}
int main()
{
    in>>n;
    for(int i=1; i<=n; i++)
        in>>v[i];
    scmax();
    return 0;
}