Cod sursa(job #1165630)

Utilizator MacWonkMihai Alexandru Cosmin MacWonk Data 2 aprilie 2014 19:52:03
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,k,i,l,r,j,poz,m;
int a[100003],sol[100003],L[100003];
int main()
{
    f>>n;
    for(i=1;i<=n;++i) f>>a[i];
    k=0; sol[0]=0;
    for(i=1;i<=n;++i)
    {
        if(a[i]>sol[k]) sol[++k]=a[i],L[i]=k;
        else
        {
            l=1; r=k;
            while(l<=r)
            {
                m=(l+r)/2;
                if(sol[m]<a[i]) l=m+1;
                else poz=m,r=m-1;
            }
            sol[poz]=a[i];
            L[i]=poz;
        }
    }
    g<<k<<'\n';
    for(i=n,j=0;i>=1&&k>0;--i)
    {
        if(L[i]==k)
        {
            sol[++j]=a[i];
            --k;
        }
    }
    for(i=j;i>=1;--i) g<<sol[i]<<" ";
    g<<'\n';
    return 0;
}