Cod sursa(job #2800996)

Utilizator amcbnCiobanu Andrei Mihai amcbn Data 14 noiembrie 2021 17:21:06
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
/* [A][M][C][B][N] / [K][R][I][P][6][8] */
#include <bits/stdc++.h>
using namespace std;
const char sp = ' ', nl = '\n';
const int MOD = 10007;
ifstream fin("scmax.in");
ofstream fout("scmax.out");

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    int n;
    fin >> n;
    vector<int> v(n), sclm;
    for (int& e : v) fin >> e;
    for (int& e : v) {
        if (sclm.empty())
            sclm.emplace_back(e);
        else if (sclm.back() < e)
            sclm.emplace_back(e);
        else {
            int st = -1, dr = sclm.size();
            while (dr - st > 1) {
                int mid = st + (dr - st) / 2;
                if (e <= sclm[mid])
                    dr = mid;
                else
                    st = mid;
            }
            sclm[dr] = e;
        }
    }
    fout << sclm.size() << nl;
    for (const int& e : sclm) fout << e << sp;
}