Cod sursa(job #1403861)

Utilizator Corneliu10Dumitru Corneliu Corneliu10 Data 27 martie 2015 17:04:42
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>
#define NMAX 100004
using namespace std;
int A[NMAX],Lmax[NMAX];
int s[NMAX],urm[NMAX];
int l,maxx,n,i,j,maxpoz,maxt=0;
/*int cautarebinara()
{
    int k,step=1;
    for(;step<i;step<<=1);
    for(k=1;step;step>>=1)
        if(k+step<=i && A[k+step]<A[i])
            k+=step;
    if(k==1 && A[k]>=A[i]) return 0;
    return k;
}*/
int main()
{
    ifstream f("scmax.in");
    ofstream g("scmax.out");
    f>>n;
    for(i=1;i<=n;i++)
        urm[i]=-1;
    for(i=1;i<=n;i++)
    {
        f>>A[i];
        l=1;maxx=1;
        for(j=1;j<i;j++)
            if(A[j]<A[i] && Lmax[j]+1>maxx)
            {
                maxx=Lmax[j]+1;
                l=Lmax[j]+1;
                urm[i]=j;
            }
        Lmax[i]=l;
        if(Lmax[i]>maxt)
        {
            maxt=Lmax[i];
            maxpoz=i;
        }
    }
    g<<maxt<<"\n";
    int val=0;
    for(i=maxpoz;i!=-1;i=urm[i]) s[val++]=A[i];
    for(i=val-1;i>=0;i--)
        g<<s[i]<<" ";
}