Cod sursa(job #1864430)

Utilizator radu.leonardoThe Doctor radu.leonardo Data 31 ianuarie 2017 19:17:28
Problema Subsir crescator maximal Scor 55
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 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]=v[1];
    k=1;
    for(i=2; i<=n; i++)
    {
        l=1;
        s=k;
        while(l<=s)
        {
            m=(l+s)/2;
            if(q[m]<v[i])   l=m+1;
            else  s=m-1;
        }
        if(l>k)  k++;
        q[l]=v[i];
        p[i]=k;
    }
    g<<k<<'\n';
    j=0;
    for(i=n;i>=1 && k>0;i--) if(p[i]==k) sol[++j]=v[i],k--;
    for(i=j;i>=1;i--) g<<sol[i]<<' ';


}