Cod sursa(job #2954369)

Utilizator AleXutzZuDavid Alex Robert AleXutzZu Data 14 decembrie 2022 08:19:07
Problema Subsir crescator maximal Scor 5
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <fstream>

#define MAX_SIZE 20000

int main() {
    std::ifstream input("scmax.in");
    std::ofstream output("scmax.out");

    int n, v[MAX_SIZE] = {0}, dp[MAX_SIZE] = {0};

    input >> n;

    for (int i = 1; i <= n; ++i) input >> v[i];

    int len = 1;

    dp[len] = v[1];

    for (int i = 2; i <= n; ++i) {
        if (v[i] > dp[len]) dp[++len] = v[i];
        else {
            int l = 1, r = len;
            int pos = 0;
            while (l <= r) {
                int mid = (l + r) / 2;

                if (dp[mid] > v[i]) pos = mid, l = mid + 1;
                else r = mid - 1;
            }
            dp[pos] = v[i];
        }
    }

    output << len << '\n';

    return 0;
}