Cod sursa(job #1274336)

Utilizator FawkesAndrei Colhon Fawkes Data 23 noiembrie 2014 18:43:09
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

int indice[100005], a[100005],ant[100005],sol[100005];
int main()
{
    ifstream f("scmax.in");
    ofstream g("scmax.out");
    int n,mx=0,ci;
    f >> n;
    for(int i=1;i<=n;++i)
    {
        f >> a[i];
    }
    indice[1]=1;
    for(int i=2;i<=n;++i)
    {
        indice[i]=1;
        for(int j=1;j<i;++j)
        {
            if(a[i]>a[j] && indice[i]<indice[j]+1)
            {
                indice[i]=1+indice[j];
                ant[i]=j;
            }
        }
        if(indice[i]>mx)
        {
            mx=indice[i];
            ci=i;
        }
    }
    g << mx << " " <<"\n" ;
    int m=1;
    while(ci)
    {
        sol[m]=a[ci];
        ci=ant[ci];
        ++m;
    }
    for(int i=m-1;i>=1;--i)
    {
        g << sol[i] <<  " ";
    }
    return 0;
}