Cod sursa(job #1956642)

Utilizator diib1023Cursi FTW diib1023 Data 6 aprilie 2017 21:50:38
Problema Subsir crescator maximal Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int main()
{
    int n,i; in >> n;
    int v[n+1];
    int lengths[n+1];

    for (i=1;i<=n;i++) lengths[i] = 1;

    for (i=1;i<=n;i++) in >> v[i];

    int maximum, position , current_length,j;

    for (i=2;i<=n;i++)
    {
        maximum = 0; position = 0;

        for (j=1;j<=i-1;j++)
        {
            if ( (maximum < v[j]) && (v[j] < v[i]) )
            {
                maximum = v[j];
                position = j;
            }
        }

        if (position != 0) lengths[i] = lengths[position] + 1;
    }

    int max_length = 0, max_position;

    for (i=1;i<=n;i++) if (lengths[i] > max_length)
    {
         max_length = lengths[i];
         max_position = i;
    }

    out << max_length << '\n';
    out << v[max_position] << " ";

    int reveresed[n+1], k = 1;

    for (i=max_position;i>=1;i--)
    {
        if (v[i] < v[max_position])
        {
            max_position = i;

            reveresed[k] = v[i];
            k++;
        }
    }

    for (i=1;i<=k-1;i++) out << reveresed[i] << " ";

    return 0;
}