Cod sursa(job #3344396)

Utilizator Gabriel_DaescuDaescu Gabriel Florin Gabriel_Daescu Data 1 martie 2026 22:19:51
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <vector>
#define NMAX 100002
using namespace std;
ifstream  fin("scmax.in");
ofstream fout("scmax.out");
int N,a[NMAX],dp[NMAX],pred[NMAX];
vector<int>sol;

void citire()
{
    fin>>N;

    for(int i=1; i<=N; i++)
    {
        fin>>a[i];
    }
}

int main()
{
    citire();

    int lmax,poz;
    lmax=poz=0;

    for(int i=1; i<=N; i++)
    {
        dp[i]++;
        for(int j=1; j<i; j++)
        {
            if(a[j]<a[i] && dp[i]<dp[j]+1)
            {
                dp[i]=dp[j]+1;
                pred[i]=j;
            }
        }

        if(dp[i]>lmax)
        {
            lmax=dp[i];
            poz=i;
        }
    }

    fout<< lmax << "\n";

    while(poz)
    {
        sol.push_back(a[poz]);
        poz=pred[poz];
    }


    for(int i=sol.size()-1; i>=0; i--)
    {
        fout<< sol[i] << " ";
    }

    return 0;
}