Cod sursa(job #1465902)

Utilizator zertixMaradin Octavian zertix Data 28 iulie 2015 11:13:41
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>
#define maxn 100020
using namespace std;
int v[maxn],dp[maxn],t[maxn];
vector <int > a;
int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    int n,best=0,besti;
    scanf("%d",&n);
    for (int i=1 ; i <=n ; ++i)
    {
        scanf("%d",&v[i]);
        dp[i]=1;
        for (int j=1; j<i ; ++j)

            if (v[j]<v[i] && dp[j]+1>dp[i])
            {
                dp[i]=dp[j]+1;
                t[i]=j;
            }
        if (dp[i]>best)
        {
            best=dp[i];
            besti=i;
        }
    }
    printf("%d\n",best);
    while (best--)
    {
        a.push_back(besti);
        besti=t[besti];

    }
    reverse(a.begin(),a.end());
    for (auto it: a)
        printf("%d ",v[it]);
    return 0;
}