Cod sursa(job #2072963)

Utilizator IsacLucianIsac Lucian IsacLucian Data 22 noiembrie 2017 15:30:04
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");

int dp[100002],urm[100002],n,a[100002];

int main()
{
    int i,maxim,p,j;

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

    urm[n]=n+1;
    dp[n]=1;

    for(i=n-1;i>=1;i--)
    {
        maxim=0;p=n+1;
        for(j=i+1;j<=n;j++)
            if(a[i]<a[j] && maxim<dp[j])
            {
                maxim=dp[j];
                p=j;
            }

        dp[i]=maxim+1;
        urm[i]=p;
    }

    maxim=0;p=0;
    for(i=1;i<=n;i++)
        if(dp[i]>maxim)
        {
            maxim=dp[i];
            p=i;
        }

    fout<<maxim<<"\n";
    while(urm[p]!=n+1)
    {
        fout<<a[p]<<" ";
        p=urm[p];
    }
    fout<<a[p]<<"\n";
    return 0;
}