Cod sursa(job #2029076)

Utilizator shantih1Alex S Hill shantih1 Data 29 septembrie 2017 10:45:33
Problema Subsir 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin("subsir2.in");
ofstream fout("subsir2.out");

int n, i, j, nr, v[100], mx, rez[100];
int best[100], pre[100], in;

int main()
{
    fin >> n;
    for (i = 1; i <= n; i++)
        fin >> v[i];

    best[1] = 1;
    for (i = 2; i <= n; i++)
    {
        mx = 0;
        for (j = 1; j < i; j++)
        {
            if (v[j] < v[i] && best[j] > mx)
            {
                mx = best[j];
                pre[i] = j;
            }
            if (v[j] < v[i] && best[j] == mx && j < pre[i])
                pre[i] = j;
        }

        best[i] = mx + 1;
    }
    mx = 0;
    for (i = 1; i <= n; i++)
    {
        if (best[i] > mx)
        {
            mx = best[i];
            in = i;
        }
        if (best[i] == mx && v[i] < v[in])
            in = i;
    }

    i = in;
    while (i != 0)
    {
        nr++;   rez[nr] = v[i];
        i = pre[i];
    }

    fout << nr << "\n";
    for (i = nr; i >= 1; i--)   fout << rez[i] << " ";
    return 0;
}