Cod sursa(job #2914853)

Utilizator andreibrosPeta Andrei Mathias andreibros Data 21 iulie 2022 09:07:10
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int a[100001],dp[100001],pred[100001];
void afisare(int pos)
{
    if(pred[pos]==-1)
        {out<<a[pos]<<" ";
        return;}
    afisare(pred[pos]);
    out<<a[pos]<<" ";
}
int main()
{
    int n;
    in>>n;
    for(int i=1; i<=n; i++)
        {in>>a[i];
         pred[i]=-1;
        }
    dp[1]=1;
    for(int i=2; i<=n; i++)
    {
        dp[i]=1;
        for(int j=1; j<=i-1; j++)
        {
            if(a[i]>a[j])
                if(dp[i]<dp[j]+1)
                    {
                        dp[i]=dp[j]+1;
                        pred[i]=j;

                    }


        }
    }
    int maxim=dp[1];
    int pos_max=1;
    for(int i=2; i<=n; i++)
    {
        if(maxim<dp[i])
            {
                pos_max=i;
                maxim=dp[i];
            }
    }
    out<<maxim<<'\n';
    afisare(pos_max);


    return 0;
}