Cod sursa(job #1102771)

Utilizator Eugen_VlasieFMI Vlasie Eugen Eugen_Vlasie Data 9 februarie 2014 14:40:39
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
long long pred[100100],m,j=1,d,i,n,x[100100],l,v[100100];
void afisare(int nr)
{
    if(pred[nr])
        afisare(pred[nr]);
    g<<v[nr]<<" ";
}
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>v[i];
        while((j<<1)<=l)
            j<<=1;
        m=0;
        d=j;
        while(d)
        {
            if(m+d<=l&&v[i]>v[x[m+d]])
                m+=d;
            d>>=1;
        }
        if(m==l)
        {
            x[++l]=i;
            pred[i]=x[l-1];
        }
        else
        {
            if(v[i]<v[x[m+1]])
            {
                x[m+1]=i;
                pred[i]=x[m];
            }
        }
    }
    g<<l<<'\n';
    afisare(x[l]);
    g<<'\n';
    return 0;
}