Cod sursa(job #2510374)

Utilizator andreibazavanAndrei Bazavan andreibazavan Data 16 decembrie 2019 16:25:08
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,x[100001],dp[100001],succ[100001];
void citire()
{
    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>x[i];
}
void rezolvare()
{
    for(int i=n;i>=1;i--)
    {
        dp[i]=0;
        for(int j=i+1;j<=n;j++)
            if(x[i]<x[j] && dp[i]<dp[j])dp[i]=dp[j],succ[i]=j;
        dp[i]++;
    }
}
void afisare()
{
    int i,Max=0,pmax=0;
    for(int i=1;i<=n;i++)
        if(dp[i]>Max)Max=dp[i],pmax=i;
    fout<<Max<<'\n';
    i=pmax;
    while(i)
    {
        fout<<x[i]<<" ";
        i=succ[i];
    }
}
int main()
{
    citire();
    rezolvare();
    afisare();
    return 0;
}