Cod sursa(job #2538125)

Utilizator BogauuuBogdan Ivancu Bogauuu Data 4 februarie 2020 14:08:24
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>

using namespace std;

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

int v[100002],d[100002],t[100002],af[100002],k,i,st,dr,mij,x,n,k2;

int main()
{
    fin >> n;
    for (i=1;i<=n;i++) fin >> v[i];
    d[1]=1;
    k=1;
    for (i=2;i<=n;i++)
    {
        st=1;
        dr=k;
        while (st<=dr)
        {
            mij=(st+dr)/2;
            if (v[d[mij]]<v[i]) st=mij+1;
            else dr=mij-1;
        }
        if (st==k+1) k++;
        d[st]=i;
        t[i]=d[st-1];
    }
    fout << k << "\n";
    x=d[k];
    while (x!=0)
    {
        k2++;
        af[k2]=v[x];
        x=t[x];
    }
    for (i=k2;i>=1;i--) fout << af[i] << " ";

    return 0;
}