Cod sursa(job #2325300)

Utilizator BiancaMariaVulsanVulsan Bianca Maria BiancaMariaVulsan Data 22 ianuarie 2019 14:19:26
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#define nmax 100005
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[nmax],n, sol[nmax], tata[nmax], maxx,poz;

void dinamica()
{
    int i,j, mx=0;
    sol[1]=1;
    tata[1]=-1;
    maxx=1;
    for(i=2; i<=n; i++)
    {mx=0; sol[i]=1; tata[i]=-1;
        for(j=1; j<i; j++)
        {
            if(v[i]>v[j])
                if(sol[j]>mx)
                {mx=sol[j]; tata[i]=j;}
        }
        sol[i]=mx+1;
        if(sol[i]>maxx)
        {maxx=sol[i]; poz=i;}
    }
}

void drum(int p)
{
    if(p!=-1)
    {
        drum(tata[p]);
        g<<v[p]<<" ";
    }
}

int main()
{
    int i;
    f>>n;
    for(i=1; i<=n; i++)
        f>>v[i];
    dinamica();
    g<<maxx<<endl;
    drum(poz);
    f.close();
    g.close();
    return 0;
}