Cod sursa(job #2500814)

Utilizator Andrei.GheorgheAndrei Gheorghe Andrei.Gheorghe Data 28 noiembrie 2019 18:49:00
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
long long int n,pre[100001],v[100001],sol[100001],indice,max3;
int main()
{
    cin>>n;
    for(long long int i=1;i<=n;i++)
    {
        cin>>v[i];
        sol[i]=1;
    }
    for(long long int i=1;i<=n;i++)
    {long max1=0;
        for(long long int j=1;j<i;j++)
        {
            if(v[i]>v[j])
            {
                if(max1<sol[j]+1)
                {
                    pre[i]=j;
                    sol[i]=sol[j]+1;
                    max1=sol[i];
                }
            }
        }
        if(max3<sol[i]){
            max3=sol[i];
            indice=i;
        }
    }
    cout<<*max_element(sol+1,sol+n+1)<<"\n";
    long long int v1[indice+1];
    v1[sol[indice]]=v[indice];
    long long int indice1=indice;
    for(long long int i=sol[indice]-1;i>0;i--)
    {
        v1[i]=v[pre[indice1]];
        indice1=pre[indice1];
    }
    for(long long int i=1;i<=sol[indice];i++)cout<<v1[i]<<" ";
}