Cod sursa(job #2363286)

Utilizator marcogoldPop Mihali Marco Silviu marcogold Data 3 martie 2019 13:21:36
Problema Subsir crescator maximal Scor 10
Compilator cpp-64 Status done
Runda pregatire_cls12_oji Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

ofstream fo("scmax.out");
ifstream fi("scmax.in");

int n;
int sir[100005];
int  dp[100005];
int last[100005];
vector <int> sol;
int main()
{
    fi>>n;

    for(int i=1; i<=n; i++)
    {
        fi>>sir[i];
        dp[i]=1;
    }




    for(int i=1; i<n; i++)
        for(int j=i+1; j<=n; j++)
        {
            if(sir[i]<sir[j] && dp[j]<dp[i]+1)
            {
                dp[j]=dp[i]+1;
                last[j]=i;
            }

        }

    fo<<dp[n]<<'\n';

    while(n)
    {
        sol.push_back(sir[n]);
        n=last[n];
    }

    reverse(sol.begin(),sol.end());

    for(auto s:sol)
        fo<<s<<" ";

    fi.close();
    fo.close();
    return 0;
}