Cod sursa(job #2696638)

Utilizator DVDPRODavid D DVDPRO Data 16 ianuarie 2021 11:23:47
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, s[100001], best[100001][2], maxval, maxpos, maxcombo[100001];

void read()
{
    fin>>n;
    for(int i=0; i<n; i++)
        fin>>s[i];
}

void solve()
{
    for(int i=1; i<n; i++)
        {
        for(int j=i; j>=0; j--)
    {
        if(s[j]<s[i] && best[j][0]+1>best[i][0])
            {
            best[i][0]=best[j][0]+1;
            best[i][1]=j;
            }

    }
    if(best[i][0]>maxval)
        {
            maxval=best[i][0];
            maxpos=i;
        }
        }
    maxval++;
}

void show(int poz, int c)
{
    if(c<0)
        return;
    maxcombo[c-1]=s[poz];
    show(best[poz][1], c-1);
}

int main()
{
    read();
    solve();
    fout<<maxval<<'\n';
    show(maxpos, maxval);
    for(int i=0; i<maxval; i++)
        fout<<maxcombo[i]<<" ";
    return 0;
}