Cod sursa(job #2878541)

Utilizator AnSeDraAndrei Sebastian Dragulescu AnSeDra Data 27 martie 2022 10:20:57
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>

using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int dp[100005],previous[100005],v[100005];
void reconst(int poz)
{
    if(poz==0)
    {
        return;
    }
    reconst(previous[poz]);
    fout<<v[poz]<<" ";
}
int main()
{
    int n,i,j,maxim=0,pozmax;
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>v[i];
    }
    dp[1]=1;
    previous[1]=0;
    for(i=2;i<=n;i++)
    {
        dp[i]=1;
        for(j=1;j<i;j++)
        {
            if(v[j]<v[i])
            {
                if(dp[i]<dp[j]+1)
                {
                    dp[i]=dp[j]+1;
                    previous[i]=j;
                }
            }
        }
    }
    pozmax=1;
    for(i=2;i<=n;i++)
    {
        if(dp[i]>dp[pozmax])
        {
            pozmax=i;
        }
    }
    fout<<dp[pozmax]<<'\n';
    reconst(pozmax);
    return 0;
}