Cod sursa(job #1717307)

Utilizator zertixMaradin Octavian zertix Data 14 iunie 2016 18:00:39
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <cstdio>
using namespace std;
int poz[100010],v[100010];
void afis(int b)
{
    printf("%d ",v[b]);
    if (poz[b]==b)
        return;
    afis(poz[b]);
}
int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    int n,l[100010];
    int maxim=0,pozmax;
    scanf("%d", &n);
    for (int i=1;i<=n;++i)
        scanf("%d",&v[i]);
    l[n]=1;
    poz[n]=n;
    for (int i=n-1;i>=1;--i)
    {
        poz[i]=i;
        l[i]=1;
        for (int j=i+1;j<=n;++j)
            if (v[i]<v[j] && l[i]-1<l[j])
            {
                l[i]=1+l[j];
                poz[i]=j;
            }
        if (l[i]>maxim)
        {
            maxim=l[i];
            pozmax=i;
        }
    }
    printf("%d\n",maxim);
    afis(pozmax);
    return 0;
}