Cod sursa(job #1748100)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 26 august 2016 10:10:57
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include<bits/stdc++.h>
#define maxN 100005
using namespace std;
deque<int> q;
int v[maxN],l[maxN],n,maxim,pre[maxN],imax;
int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    l[0]=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&v[i]);
    }
    for(int i=1;i<=n;i++)
    {
        maxim=0;
       int jmax=0;
        for(int j=0;j<i;j++)
        {
            if (v[j]<v[i])
            {
                if (l[j]>maxim) maxim=l[j],jmax=j;
            }
        }
        l[i]=maxim+1;
        pre[i]=jmax;
    }
    maxim=0;
    for(int i=1;i<=n;i++)
    {
        if (l[i]>maxim)
        {
            maxim=l[i];
            imax=i;
        }
    }
    printf("%d\n",maxim);
    int j=imax;
    while (j>0)
    {
        q.push_back(v[j]);
      //  printf("%d\n",v[j]);
        j=pre[j];
    }
    while (!q.empty())
    {
        printf("%d ",q.back());
        q.pop_back();
    }
    printf("\n");
    return 0;
}