Cod sursa(job #2235995)

Utilizator Stefan3002Stefan Stefan3002 Data 27 august 2018 16:17:31
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream intrare("scmax.in");
ofstream iesire("scmax.out");

int n,a[100000],lg[100000],k,g,aux[100000],pred[100000],i,j,z,lgmax=-1;
int main()
{
    intrare>>n;
    for(i=0; i<n; i++)
        intrare>>a[i];

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


    for(i=0; i<n; i++)
        for(j=0; j<i; j++)
            if(a[j]<a[i])
            {
                z=lg[j]+1;
                if(z>=lg[i])
                {
                    lg[i]=z;
                    pred[i]=j;
                }
                if(lg[i]>lgmax)
                {
                    lgmax=lg[i];
                    g=i;
                }

            }



    i=g;
    z=1;
    aux[z]=a[g];
    z++;
    do
    {
        aux[z]=a[pred[i]];

        if(lg[i]==1)
            break;

        for(j=i-1; j>=0; j--)
            if(lg[j]==lg[i]-1)
            {
                i=j;
                break;
            }

        z++;

    }
    while(i!=1);
    iesire<<lgmax<<endl;

    for(i=z-1; i>=1; i--)
        iesire<<aux[i]<<" ";



    return 0;
}