Cod sursa(job #1369659)

Utilizator vladm98Munteanu Vlad vladm98 Data 3 martie 2015 10:29:04
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>

using namespace std;
int a[100000], Lmax[100000], urm[100000];
int main()
{
    ifstream fin ("scmax.in");
    ofstream fout ("scmax.out");
    register int i, j;
    int pozmax, n, maxim=-1, k;
    fin >> n;
    for (i=0; i<n; ++i)
        fin >> a[i];
    urm[n-1]=-1;
    Lmax[n-1]=1;
    for (i=n-2; i>=0; --i)
    {
        k=0;
        for (j=i+1; j<n; ++j)
        {
            if (a[i]<a[j] && (Lmax[j]+1)>Lmax[i])
            {
                Lmax[i]=Lmax[j]+1;
                if (Lmax[i]>maxim)
                {
                    maxim=Lmax[i];
                    pozmax=i;
                }
                urm[i]=j;
                k=1;
            }
        }
        if (k==0)
        {
            urm[i]=-1;
            Lmax[i]=1;
        }
    }
    fout << maxim << '\n';
    for (i=pozmax; i!=-1; i=urm[i])
        fout<<a[i]<<" ";
    return 0;
}