Cod sursa(job #2077152)

Utilizator andreimuthMuth Andrei andreimuth Data 27 noiembrie 2017 19:30:34
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");

int v[105], i, n, j, lu[105], maxx, poz[105], pmax, x;

int main()
{
    fin >> n;
    for (i = 1; i <= n; i++)
        fin >> v[i];
    lu[n] = 1;
    for (i = n - 1; i > 0; i--)
    {   lu[i] = 1;
        for (j = i + 1; j <= n; j++)
        {
            if (v[i] < v[j])
            {
                if (lu[j] + 1 > lu[i])
                    lu[i] = lu[j] + 1;
            }
        }
    }

    maxx = lu[1];
    pmax = 1;
    for (i = 2; i <= n; i++)
    {
        if (lu[i] > maxx)
            maxx = lu[i], pmax = i;;
    }

    poz[n] = 0;
    for (i = n - 1; i > 0; i--)
    {   x = 0;
        for (j = i + 1; j <= n; j++)
        {
            if (v[i] < v[j] && lu[j] > x)
            {
                    poz[i] = j, x = lu[j];
            }
        }
    }

    fout << "subsirul crescator maximal are lungimea " << maxx << '\n';
    for (i = pmax; i <= n && i > 0; )
    {
        fout << v[i] << ' ';
        i = poz[i];
    }

    fin.close ();
    fout.close ();
    return 0;
}