Cod sursa(job #2541722)

Utilizator KPP17Popescu Paul KPP17 Data 8 februarie 2020 19:39:07
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
using namespace std;


#define fisier "scmax"

#ifdef fisier
    #include <fstream>
    ifstream in(fisier ".in");
    ofstream out(fisier ".out");
#else
    #include <iostream>
    #define in cin
    #define out cout
#endif



const int MAX_N = 100000;

int d[MAX_N + 1], sol[MAX_N], max_lun;



int cb(int val) { // primul element >= val

    int st = 0, dr = max_lun, m;

    while (st <= dr) {

        m = (dr + st) / 2;

        if (d[m] < val) {

            st = m + 1;

        } else {

            dr = m - 1;

        }

    }

    return st;

}



int main() {

    int n, iter, i;

    in >> n;

    while (n--) {

        in >> iter;

        i = cb(iter);

        d[i] = iter;

        if (i > max_lun) {

            max_lun++;

            copy(d + 1, d + max_lun + 1, sol);

        }

    }



    out << max_lun << '\n';

    for (i = 0; i < max_lun; i++) {

        out << sol[i] << ' ';

    }

}













//