Cod sursa(job #2133667)

Utilizator SoranaAureliaCatrina Sorana SoranaAurelia Data 17 februarie 2018 10:51:44
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#include <algorithm>
using namespace std;

long long a[100000];
int dp[100000];
int vmax;
int main()
{
    freopen("scmax.in", "r", stdin);
    freopen("scmax.out", "w", stdout);
    int n, poz;
    scanf("%d", &n);
    for(int i=1; i<=n; i++)
        scanf("%lld ", &a[i]);
    for(int i=n;i>=1;i--)
    {
        int vv=0;
        for(int j=i+1;j<=n;j++)
            if(a[j]>a[i] && dp[j]>vv)
                vv=dp[j];
        dp[i]=1+vv;
        if(vmax<dp[i])
        {
            vmax=dp[i];
            poz=i;
        }
    }
    printf("%d\n%lld ",vmax,a[poz]);
    for(int i=poz+1; i<=n && vmax!=0; i++)
    {
        if(dp[i] == vmax-1)
        {
            printf("%d ", a[i]);
            vmax--;
        }
    }
    return 0;
}