Cod sursa(job #2798792)

Utilizator liviu_flPrioteasa Liviu liviu_fl Data 11 noiembrie 2021 21:29:49
Problema Subsir crescator maximal Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
using namespace std;
int v[1001], l[1001], t[1001];
int n, maxim, max_global, poz_max;
ifstream fin("scmax.in");
ofstream fout("scmax.out");


void search(int d, int& maxim)
{
    maxim = 0;
    for (int i = d - 1; i >= 1; i--)
    {
        if (v[i]<v[d] && l[i]>maxim)
        {
            maxim = l[i];
        }
    }
    maxim++;
}
int main() {

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


    for (int i = 1; i <= n; i++)
    {
        search(i, maxim);
        l[i] = maxim;
        if (maxim > max_global)
        {
            max_global = maxim;
            poz_max = i;
        }
    }

    fout << max_global << endl;
    int limit = max_global;
    for (int i = poz_max; i >= 1; i--)
    {
        if (l[i] == max_global)
        {
            t[max_global] = v[i];
            max_global--;
        }
        if (max_global == 0)
        {
            break;
        }
    }
    for (int i = 1; i <= limit; i++)
    {
        fout << t[i] << " ";
    }
    return 0;
}