Cod sursa(job #2522555)

Utilizator ioanasIoana S ioanas Data 12 ianuarie 2020 17:53:02
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <vector>

using namespace std;

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

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

    vector<int> r(n+1, -1);
    vector<int> sol(n+1, -1);
    r[1] = a[0];
    int pos = 1;
    sol[1] = a[0];
    for (int i = 1; i < n; ++i) {
        if (a[i] > r[pos]) {
            r[++pos] = a[i];
            for (int j = 1; j <= pos; ++j)
                sol[j] = r[j];
        } else {
            for (int j = pos-1; j >= 0; --j)
                if (a[i] > r[j] && a[i] < r[j+1]) {
                    r[j+1] = a[i];
                    break;
                }
        }
    }

    out << pos << "\n";
    for (int i = 1; i <= pos; ++i)
        out << sol[i] << " ";
}