Cod sursa(job #1853691)

Utilizator abccnuCamelia Zalum abccnu Data 21 ianuarie 2017 23:11:35
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>
using namespace std;

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

const int NMAX=100000+5;

int a[NMAX], tata[NMAX], sol[NMAX], k, n, prim;
bool vis[NMAX];

void dinam()
{int i , j;
       for (i = n-1 ; i > 0; --i)
    {

        for (j = i+1; j <= n; ++j)
        {
            if (a[i] < a[j] && sol[i]<sol[j]+1)
            {
                    sol[i] =  sol[j]+1;
                    tata[i] = j;


            }
            if(k<sol[i]) {k=sol[i];prim=i;}
        }
    }

}

int main()
{
    f >> n;
    for (int i = 1; i <= n; ++i)f >> a[i];
sol[n]=1;
    dinam();

    fout << k << "\n";
    for (int i = prim; i > 0; i=tata[i])fout << a[i]<< " ";
                                        return 0;
}