Cod sursa(job #2722144)

Utilizator maraboneaMara Bonea marabonea Data 12 martie 2021 16:49:57
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
/**
*/
#include <fstream>

using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int nmax=1e5 +5;
int n,v[nmax],sol;
int dp[nmax],poz[nmax];
void read()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
    }
}
void solve()
{
    int maxim=1,p=n;
    dp[n]=1;
    poz[n]=-1;
    for(int i=n-1;i>=1;i--)
    {
        dp[i]=1;
        poz[i]=-1;
        for(int j=i+1;j<=n;j++)
        {
            if(v[i]<v[j] && dp[i]<dp[j]+1)
                {
                    dp[i]=1+dp[j];
                    poz[i]=j;
                }
                if(dp[i]>maxim)
                {
                    maxim=dp[i];
                    p=i;
                }
        }
    }

    fout<<maxim<<endl;
    int j=p;
    while(j!=-1)
    {
        fout<<v[j]<<" ";
        j=poz[j];
    }
}
int main()
{
    read();
    solve();
   return 0;
}