Cod sursa(job #2457414)

Utilizator RaresPopaRares Popa RaresPopa Data 17 septembrie 2019 18:17:38
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

int n,a[100001],scm[100001];
int poz[100001];

vector <int> sol;

int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);

    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];

    for(int i=1;i<=n;i++)
        for(int j=1;j<i;j++)
            //scm[i] = 1;
            if(a[j]<a[i])
                if(scm[i]<scm[j]+1)
                {
                    poz[i]=j;
                    scm[i]=scm[j]+1;
                }

    int mxs=0,pmxs;
    for(int i=1;i<=n;i++)
        if(mxs<scm[i]+1)
        {
            mxs=scm[i]+1;
            pmxs=i;
        }

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

    cout<<mxs<<'\n';
    for(int i=sol.size()-1;i>=0;i--)
        cout<<sol[i]<<' ';
    return 0;
}