Cod sursa(job #1043590)

Utilizator raluca.turcuTurcu Raluca raluca.turcu Data 28 noiembrie 2013 19:41:37
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int v[100000], lung[100000], pred [100000], n, max,a;

void sir ()
{
    int max;
    lung[1]=1;
    for (int i=2; i<=n; i++)
    {
        max=0;
        for (int j=1; j<i; j++)
        {
            if (v[j]<v[i])
                if (lung[j]>max)
                {
                    max=lung[j];
                    pred[i]=j;
                }
        }
        lung[i]=1+max;
    }
    a = 1;
    for (int i=2; i<=n; i++)
    {
        if (lung[i]>lung[a])
            a=i;
    }
}

void refac(int p)
{
    if(pred[p] != 0)
        refac(pred[p]);
    out << v[p] << " ";
}

int main()
{
    in>>n;
    for (int i=1; i<=n; i++)
        in>>v[i];
    sir ();
    out<<lung[a]<<"\n";
    refac(a);
    return 0;
}