Cod sursa(job #1257752)

Utilizator Alex_SimionSimion Alexandru Alex_Simion Data 8 noiembrie 2014 10:14:33
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#define N 100010
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,Lmax,i,j,L,R,M,a[N],b[N],x[N],p[N],s[N],oo=2000000010;
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>a[i];
        b[i]=oo;
        for(L=0,R=Lmax+1;R-L>1;)
        {
            M=(R+L)/2;
            if(b[M]<a[i])L=M;
            else R=M;
        }
        x[i]=p[L];
        if(b[R]==oo)Lmax++;
        if(a[i]<b[R])
        {
            b[R]=a[i];
            p[R]=i;
        }
    }
    g<<Lmax<<'\n';
    for(i=p[Lmax],j=Lmax;j;i=x[i],j--)
        s[j]=a[i];
    for(i=1;i<=Lmax;i++)
        g<<s[i]<<' ';
    return 0;
}