Cod sursa(job #2261378)

Utilizator VinaAndreeaVina Andreea VinaAndreea Data 16 octombrie 2018 10:36:01
Problema Subsir crescator maximal Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int v[100010],sol[100010],urm[100010],maxim,n,pozmax;
void citire();
void rezolvare();
void afisare(int poz);
int main()
{
    citire();
    rezolvare();
    return 0;
}
void citire()
{
    int i;
    fin >> n;
    for(i=1; i<=n; i++)
        fin >> v[i];
}
void rezolvare()
{
    int i,k;
    sol[n]=1;
    k=n-1;
    for(k=n-1; k>=1; k--)
    {
        for(i=k; i<=n; i++)
        {
            if(v[k]<v[i] && sol[k]<sol[i]+1)
            {
                sol[k]=sol[i]+1;
                urm[k]=i;
            }
        }
    }
    for(i=1;i<=n;i++)
        if(sol[i]>maxim)
            maxim=sol[i],pozmax=i;
    fout << maxim << '\n';
    afisare(pozmax);
}
void afisare(int poz)
{
    int i;
    if(poz==0)
        return;
    fout << v[poz] << ' ';
    afisare(urm[poz]);
}