Cod sursa(job #2963614)

Utilizator RalucaioneteRalucaIonete Ralucaionete Data 11 ianuarie 2023 16:39:37
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include<fstream>
using namespace std;

const int N=1e5;
int v[N+1], lung[N+1], n;

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

void refac_subsir(int p, int l, int val)
{
    if(l==0)
        return;
    if(lung[p]==l && v[p] < val)
    {
        refac_subsir(p-1, l-1, v[p]);
        fout << v[p] << " ";
    }
    else
    {
        refac_subsir(p-1, l, val);
    }
}

int main()
{
    fin >> n;
    int pmax=1;
    for(int i=1; i<=n; i++)
    {
        int l_j=0;
        fin >> v[i];
        for(int j=1; j<i; j++)
        {
            if(v[j]<v[i])
               {
                   if(lung[j]>l_j)
                    l_j=lung[j];
               }
        }
        lung[i]=1+l_j;
        if(lung[i]>lung[pmax])
        {
            pmax=i;
        }
    }
    fout << lung[pmax] << "\n";
    refac_subsir(pmax, lung[pmax], v[pmax]+1);
    return 0;
}