Cod sursa(job #2457670)

Utilizator StanCatalinStanCatalin StanCatalin Data 18 septembrie 2019 14:50:39
Problema Subsir crescator maximal Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("scmax.in");
ofstream out("scmax.out");

const int dim = 100005;

int n,a[dim],l[dim],pre[dim];

void afiseaza(int poz)
{
   if (pre[poz] != 0)
   {
      afiseaza(pre[poz]);
   }
   if (poz >= 1 && poz <= n)
     out << a[poz] << " ";
}

int main()
{
    in >> n;
    for (int i=1; i<=n; i++)
    {
        in >> a[i];
    }
    l[1] = 1;
    int maxi,pred,maxim = -1,poz;
    for (int i=2; i<=n; i++)
    {
        maxi = 0;
        for (int j=1; j<i; j++)
        {
            if (a[j] < a[i])
            {
               if (maxi < l[j])
               {
                  maxi = l[j];
                  pred = j;
               }
            }
        }
        l[i] = 1 + maxi;
        pre[i] = pred;
        if (maxim < l[i])
        {
            maxim = l[i];
            poz = i;
        }
    }
    out << maxim << "\n";
    afiseaza(poz);
    return 0;
}