Cod sursa(job #1208591)

Utilizator nicol.bolasNicol Bolas nicol.bolas Data 16 iulie 2014 10:14:28
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
using namespace std;
#define NMAX 100005
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,m,st,dr,mij,a[NMAX],T[NMAX],L[NMAX];
void afis(int x)
{
    if (x)
    {
        afis(T[x]);
        fout<<a[x]<<" ";
    }
}
int main()
{
    int i;
    fin>>n;
    for (i=1;i<=n;++i)
    {
        fin>>a[i];
        if (a[i]>a[L[m]])
            L[++m]=i, T[i]=L[m-1];
        else
        {
            st=1, dr=m;
            while (st<=dr)
            {
                mij=st+(dr-st)/2;
                if (a[i]<=a[L[mij]])
                    dr=mij-1;
                else
                    st=mij+1;
            }
            L[st]=i, T[i]=L[st-1];
        }
    }
    fout<<m<<"\n";
    afis(L[m]);
    fout<<"\n";
    return 0;
}