Cod sursa(job #2989671)

Utilizator VladPislaruPislaru Vlad Rares VladPislaru Data 6 martie 2023 21:25:18
Problema Subsir crescator maximal Scor 5
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, x, nr;
int a[200005];
int dp[200005];
int best[200005];


int CB(int x) {
    int st = 1, dr = nr, mid, p = nr;

    while (st <= dr) {

        mid = (st + dr) / 2;

        if (x <= dp[mid]) {
            p = mid;
            dr = mid - 1;
        }
        else st = mid + 1;
    }
    return p;
}

int main()
{
    fin >> n;
    for (int i = 1; i <= n; i++)
        fin >> a[i];
    best[1] = 1;
    dp[1] = 1;
    dp[0] = 0;
    nr = 1;
    for (int i = 2; i <= n; i++) {
        int poz = CB(a[i]);
        ///cout << poz << " ";
        best[i] = poz + 1;
        dp[poz + 1] = i;
        if (nr < poz + 1)
            nr = poz + 1;
        ///cout << dp[1] << " " << dp[2] << " " << dp[3] << "\n";
    }
    fout << nr << "\n";
    return 0;
}