Cod sursa(job #2393238)

Utilizator StanCatalinStanCatalin StanCatalin Data 31 martie 2019 09:50:52
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("scmax.in");
ofstream out("scmax.out");

const int dim = 100005;

int n,v[dim],s[dim],sol[dim];

void Solutie(int i)
{
    if (sol[i] == -1)
    {
        out << s[i] << " ";
        return ;
    }
    Solutie(sol[i]);
    out << s[i] << " ";
}

int main()
{
    int i,maxi,j,i_max,l_max = -1,poz = -1;
    in >> n;
    for (i=1; i<=n; i++)
    {
        in >> s[i];
    }
    v[1] = 1;
    sol[1] = -1;
    for (i=2; i<=n; i++)
    {
        maxi = -1;
        i_max = -1;
        for (j=1; j<i; j++)
        {
            if (s[j] < s[i])
            {
                if (v[j] > maxi)
                {
                    maxi = v[j];
                    i_max = j;
                }
            }
        }
        if (maxi == -1)
        {
            v[i] = 1;
            sol[i] = -1;
        }
        else
        {
            v[i] = 1 + maxi;
            sol[i] = i_max;
        }
        if (l_max < v[i])
        {
            l_max = v[i];
            poz = i;
        }
    }
    ///cout << l_max << " " << poz << "\n";
    /*for (i=1; i<=n; i++)
    {
        cout << sol[i] << " ";
    }*/
    out << l_max << "\n";
    Solutie(poz);
    return 0;
}