Cod sursa(job #2061621)

Utilizator LostHawkIgnat Robert LostHawk Data 9 noiembrie 2017 16:01:57
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>
/*
    24 12 15 15 19
    1  1  2  2  3
    1  2  3  4  5
    ___________________
   v: 17 13 4 9 53 18 1 3 7 2 77
  dp: 1  1  1 2 3  3  1 2 3 2 4
   p: 0  0  0 3 4  4  0 7 8 7 6
*/
int n,v[100005],dp[100005]={1},p[100005],lmax,poz,maxx=-1,dim,rez[100005];
using namespace std;
ifstream f ("scmax.in");
ofstream g ("scmax.out");
int main()
{
    f>>n;
    for(int i=1;i<=n;i++)
        f>>v[i];
        dp[1]=1;
    for(int i=2;i<=n;i++)
    {
        lmax=0;poz=0;
        for(int j=1;j<i;j++)
        {
            if(v[j]<v[i] && lmax<dp[j])
            {
                lmax=dp[j];
                poz=j;
            }
        }
        dp[i]=lmax+1;
        p[i]=poz;
    }
    for(int i=1;i<=n;i++)
    if(dp[i]>maxx){maxx=dp[i];poz=i;}
    g<<maxx<<'\n';
    dim=0;
    for(int i=poz;i!=0;i=p[i])
    {
        dim++;
        rez[dim]=v[i];
    }
    for(int i=dim;i>=1;i--)
        g<<rez[i]<<' ';
    return 0;
}