Cod sursa(job #1204750)

Utilizator pentrusandaPentru Sanda pentrusanda Data 3 iulie 2014 19:43:18
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>

using namespace std;

int n,a[100005][2],l[100005],lmax,sol[100005];

int main()
{
    ifstream in ("scmax.in");
    ofstream out ("scmax.out");

    in>>n; lmax=1; a[0][0]=2000000005;
    for (int i=1;i<=n;++i)
    {
        in>>a[i][0];
        int st=1,dr=100004;
        while (st<dr)
        {
            int m=(st+dr)/2;
            if (a[l[m]][0]<a[i][0]) st=m+1;
            if (a[l[m]][0]>=a[i][0]) dr=m;
        }
        l[st]=i; a[i][1]=l[st-1];
    }

    int i=0;
    while (l[i+1]!=0) ++i;
    out<<i<<"\n";
    i=l[i];
    while (i!=0)
    {
        ++sol[0];
        sol[sol[0]]=i;
        i=a[i][1];
    }
    for (int i=sol[0];i>0;--i) out<<a[sol[i]][0]<<" ";

    in.close();
    out.close();
    return 0;
}