Cod sursa(job #2762445)

Utilizator lostinwwwAndrei Ivan lostinwww Data 7 iulie 2021 11:49:03
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>

using namespace std;

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

int n, a[100001], nr, dp[100001], k, v[100001];

void read()
{
    in >> n;
    for (int i=1; i<=n; i++)
            in >> a[i];
}

int cautare_binara(int x)
{
    int st, dr, mij;
    st=1;
    dr=k;
    while (st<=dr)
    {
        mij=(st+dr)/2;
        if (v[mij]>=x) dr=mij-1;
              else  st=mij+1;
    }
    v[st]=x;
    return st;
}

void solve()
{
    for (int i=1; i<=n; i++)
    if (a[i]>v[k])
        {
            dp[i]=k+1;
            v[++k]=a[i];
        }
        else
            dp[i]=cautare_binara(a[i]);

}

void output()
{
    out << k << '\n';
    for (int i=1; i<=k; i++)
        out << v[i] <<" ";
}

int main()
{
    read();
    solve();
    output();
    return 0;
}