Cod sursa(job #2794571)

Utilizator lucriLuchian Cristian lucri Data 5 noiembrie 2021 09:46:15
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int n,v[100010],m[100010],nrm,r[100010];
int cb(int b,int e,int val)
{
    if(e<b)
        return e;
    int a=(e+b)/2;
    if(val>m[a])
        return cb(a+1,e,val);
    return cb(b,a-1,val);
}
int main()
{
    in>>n;
    for(int i=1;i<=n;++i)
        in>>v[i];
    for(int i=1;i<=n;++i)
    {
        int x=cb(1,nrm,v[i]);
        m[x+1]=v[i];
        if(x+1>nrm)
        {
            nrm=x+1;
            for(int j=1;j<=nrm;++j)
                r[j]=m[j];
        }
    }
    out<<nrm<<'\n';
    for(int i=1;i<=nrm;++i)
        out<<r[i]<<' ';
    return 0;
}