Cod sursa(job #2532480)

Utilizator hunting_dogIrimia Alex hunting_dog Data 27 ianuarie 2020 21:05:39
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
#define NMAX 100000

using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");

void read(int &n,int *v)
{
    fin>>n;
    for(int i=0;i<n;++i)
        fin>>v[i];
}

int main()
{
    int n,m,a[NMAX],b[NMAX];
    read(n,a);
    //read(m,b);

    int nr=0;
    int best[NMAX]={0},prec[NMAX];
    for(int i=0;i<n;++i)
        {
        best[i]=1;
        prec[i]=i;
        for(int j=0;j<i;++j)
            if(a[i]>a[j])
                if(1+best[j]>best[i])
                {
                    best[i]=1+best[j];
                    prec[i]=j;
                }
        }

    int res=0,last=0;
    for(int i=0;i<n;++i)
        if(best[i]>res)
        {
            res=best[i];
            last=i;
        }
    int k=res;
    do
    {
        b[--k]=a[last];
        last=prec[last];
    }while(last!=prec[last]);

    b[--k]=a[last];

    fout<<res<<'\n';
    for(int i=0;i<res;++i)
        fout<<b[i]<<' ';

    return 0;
}