Cod sursa(job #2208380)

Utilizator georgitTreista Georgiana georgit Data 29 mai 2018 15:36:05
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#define N 100005

using namespace std;
int a[N],ex[N],nr[N],lmax,v[N];
int cautbin(int val)
{
    int st=1,dr=lmax,mij=0;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(a[nr[mij]]>=val)
            dr=mij-1;
        else st=mij+1;
    }
    return st;
}
int main()
{
    ifstream f("scmax.in");
    ofstream g("scmax.out");
    int n;
    f>>n;
    for(int i=1;i<=n;i++)
        f>>a[i];
    nr[1]=1;
    lmax=1;
    int lungime;
    for(int i=2;i<=n;i++)
    {
        lungime=cautbin(a[i]);
        lmax=max(lmax,lungime);
        nr[lungime]=i;
        ex[i]=nr[lungime-1];
    }
    g<<lmax<<"\n";
    int poz=nr[lmax],k=0;
    while(poz)
    {
        v[++k]=a[poz];
        poz=ex[poz];
    }
    for(int i=k;i>=1;i--)
        g<<v[i]<<" ";

    return 0;
}