Cod sursa(job #1864441)

Utilizator radu.leonardoThe Doctor radu.leonardo Data 31 ianuarie 2017 19:24:08
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");

int n,v[100003],i,m,k,l,s,q[100003],p[100003],sol[100003],j;

int main()
{
    f>>n;
    for(i=1; i<=n; i++)  f>>v[i];
    q[1]=1;
    k=1;
    for(i=2; i<=n; i++)
    {
        l=1;
        s=k;
        while(l<=s)
        {
            m=(l+s)/2;
            if(v[q[m]]<v[i])   l=m+1;
            else  s=m-1;
        }
        if(l>k)  k++;
        q[l]=i;
        p[i]=q[l-1];
    }
    g<<k<<'\n';
    i=q[k];
    while(i!=0) sol[++j]=i,i=p[i];
    for(i=k; i>=1; i--)    g<<v[sol[i]]<<" ";

}