Cod sursa(job #2119139)

Utilizator anamariazidaruZidaru Ana-Maria anamariazidaru Data 31 ianuarie 2018 18:21:08
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>

using namespace std;

const int N=100001;
int a[N], n, dp[N], pred[N], lmax, pmax;
ifstream f ("scmax.in");
ofstream g ("scmax.out");

void subsir (int p)
{
    if (pred[p])
    {
        subsir(pred[p]);
    }
    g<<a[p]<<" ";
}

int main()
{
    int i, j;
    f>>n;
    for (i=1; i<=n; i++)
    {
        f>>a[i];
    }
    pmax=0;
    for (i=1; i<=n; i++)
    {
        lmax=0;
        for (j=1; j<i; j++)
        {
            if (a[j]<a[i])
            {
                if (dp[j]>lmax)
                {
                    lmax=dp[j];
                    pred[i]=j;
                }
            }
        }
        dp[i]=1+lmax;
        if (dp[i]>dp[pmax])
        {
            pmax=i;
        }
    }
    g<<dp[pmax]<<'\n';
   subsir(pmax);
    return 0;
}