Cod sursa(job #1734796)

Utilizator triscacezarTrisca Vicol Cezar triscacezar Data 28 iulie 2016 11:55:30
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#define N 100010
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
void afiseaza(int);
int x[N],s[N],v[N],p[N],b[N],i,n,L,R,M,lmax;
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
        f>>x[i];
    for(i=1;i<=n;i++)
    {
        L=0;R=lmax+1;
        while(R-L>1)
        {
            M=(R+L)/2;
            if(v[M]<x[i])
                L=M;
            else
                R=M;
        }
        s[i]=R;
        b[i]=p[L];
        v[R]=x[i];
        p[R]=i;
        if(R>lmax)
            lmax=R;
    }
    g<<lmax<<'\n';
    afiseaza(p[lmax]);
    return 0;
}
void afiseaza(int q)
{
    if(q==0)
        return;
    afiseaza(b[q]);
    g<<x[q]<<" ";
}