Cod sursa(job #2261367)

Utilizator OlariuIrinaOlariu Irina OlariuIrina Data 16 octombrie 2018 10:33:11
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("lis.in");
ofstream fout("lis.out");

int n, a[100000], urm[100000], LIS[100000], i, j, maxim, maximu;

void Citire()
{
    fin>>n;
    for(i=1; i<=n; i++)
    {
        fin>>a[i];
    }
}

void Pd()
{
    LIS[n]=1;
    urm[n]=0;
    for(i=n-1; i>0; i--)
    {
        for(j=i+1; j<=n; j++)
        {
            if(a[i]<a[j])
            {
                if(LIS[i]<LIS[j]+1)
                {
                    LIS[i]=LIS[j]+1;
                    urm[i]=j;
                }
            }
        }

    }
}
void Afisare()
{
    for(i=1; i<n; i++)
    {
        if(maxim<LIS[i])
            {
                maxim=LIS[i];
                maximu=i;
            }
    }
    fout<<maxim<<'\n';
    while(maximu!=0)
    {
        fout<<a[maximu]<<' ';
        maximu=urm[maximu];
    }
}

int main()
{
    Citire();
    Pd();
    Afisare();
    return 0;
}