Cod sursa(job #2123786)

Utilizator netfreeAndrei Muntean netfree Data 6 februarie 2018 17:09:18
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <bits/stdc++.h>

using namespace std;

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

const int N_MAX = 100000 + 5;

int n, a[N_MAX], b[N_MAX], c[N_MAX], nb;

bool cmp(int lo, int hi){
    return(a[lo]<a[hi]);
}

void print_ans(int ind){
    if(ind){
        print_ans(c[ind]);
    fout << a[ind] << " ";}
}

int main () {
    fin >> n;

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

        int poz = lower_bound(b + 1, b + nb + 1, i, cmp) - b;
        nb = max(nb, poz);

        b[poz] = i;
        c[i] = b[poz - 1];
    }

    fout << nb << "\n";

    print_ans(b[nb]);
    return 0;
}

//Andrei Muntean, 2018