Cod sursa(job #1254062)

Utilizator RazecBotez Cezar Razec Data 2 noiembrie 2014 10:03:36
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#define N 100010
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,p[N],x[N],v[N],b[N],L,R,M,B,Lmax,oo=2000000001;
void afisare(int);
int main()
{
    f>>n;
    int i;
    for(i=1;i<=n;i++)
    {
        f>>x[i];
        v[i]=oo;
    }
    for(i=1;i<=n;i++)
    {
        for(L=0,R=Lmax+1;R-L>1;)
        {
            M=(L+R)/2;
            if(v[M]<x[i])
                L=M;
            else
                R=M;
        }
        b[i]=p[L];
        if(v[R]==oo)
            Lmax++;
        if(x[i]<v[R])
        {
            v[R]=x[i];
            p[R]=i;
        }
    }
    g<<Lmax<<'\n';
    afisare(p[Lmax]);

    return 0;
}
void afisare(int i)
{
    if(!i)
        return;
    afisare(b[i]);
    g<<x[i]<<' ';
}