Cod sursa(job #3184403)

Utilizator andu9andu nita andu9 Data 15 decembrie 2023 19:52:34
Problema Subsir crescator maximal Scor 5
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <vector>

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

int BinSearch (std::vector<int> & v, int x) {
    int left = 0, right = v.size () - 1;
    while (left <= right) {
        int middle = (left + right) >> 1;
        if (v[middle] <= x)
            left = middle + 1;
        else
            right = middle - 1;
    }
    return left;
}

int main () {
    int n; fin >> n;
    std::vector<int> v(n);
    for (int i = 0; i < n; i += 1)
        fin >> v[i];

    std::vector<int> x; x.emplace_back (v[0]);
    for (int i = 1; i < n; i += 1) {
        if (v[i] > x[x.size () - 1])
            x.emplace_back (v[i]);
        else
            x[BinSearch (v, v[i])] = v[i];
    }

    fout << x.size ();
    return 0;
}