Cod sursa(job #2815446)

Utilizator Tudor_PascaTudor Pasca Tudor_Pasca Data 9 decembrie 2021 17:15:27
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

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

const int N_MAX = 1e5;
const int INF = 2e9 + 5;

int n, k, scm_end;
int v[N_MAX + 5], p[N_MAX + 5];
vector<int> L(N_MAX + 5, 0), L_id(N_MAX + 5, 0);

void print_scm(int i)
{
    if(p[i] == -1)
    {
        out << v[i] << ' ';
        return;
    }
    print_scm(p[i]);
    out << v[i] << ' ';
}

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

    for(int i = 0; i < n; i++)
    {
        int pos = lower_bound(L.begin(), L.begin() + k, v[i]) - L.begin();

        L[pos] = v[i];
        L_id[pos] = i;

        p[i] = (pos > 0 ? L_id[pos - 1] : -1);

        if(pos == k)
        {
            k++;
            scm_end = i;
        }
    }

    out << k << '\n';
    print_scm(scm_end);
    out << '\n';

    return 0;
}