Cod sursa(job #3311240)

Utilizator RuxandraPro12_Metehau Ruxandra Maria RuxandraPro12_ Data 20 septembrie 2025 16:07:36
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int N_MAX = 100000;
int n;
int v[N_MAX + 5], lungime[N_MAX + 5], pozitie[N_MAX + 5], sol[N_MAX + 5];

int main() {
    fin >> n;
    for (int i = 1; i <= n; i++)
        fin >> v[i];
    int maxim = 1, poz = 1;
    for (int i = 1; i <= n; i++) {
        lungime[i] = 1;
        pozitie[i] = -67;
        for (int j = 1; j < i; j++) {
            if (v[i] > v[j] && lungime[i] < lungime[j] + 1) {
                lungime[i] = lungime[j] + 1;
                pozitie[i] = j;
            }
        }
        if (lungime[i] > maxim) {
            maxim = lungime[i];
            poz = i;
        }
    }
    fout << maxim << "\n";
    int m = 0;
    while (poz != -67) {
        sol[++m] = poz;
        poz = pozitie[poz];
    }
    for (int i = m; i >= 1; i--)
        fout << v[sol[i]] << " ";
    fout << "\n";
    return 0;
}