Cod sursa(job #2039314)

Utilizator TavinciStefanescu Octavian Tavinci Data 14 octombrie 2017 13:30:05
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

    ifstream fin("scmax.in");
    ofstream fout("scmax.out");
int n, v[100001], cv[100001], ant[100001], maxi=0, sol[100001], ok=1;
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
        cv[i]=0;
        for(int j=1;j<i;j++)
        {
            if(cv[j]>cv[i] && v[i]>v[j])
            {
                cv[i]=cv[j];
                ant[i]=j;
            }
        }
        cv[i]++;
        if(cv[i]>maxi)
        {
            maxi=cv[i];
        }
    }
    fout<<maxi<<'\n';
    int i=n, indice=maxi;
    while(i>=1)
    {
        if(cv[i]==maxi && ok==1)
        {
            sol[indice]=v[i];
            i=ant[i];
            ok=0;
            indice--;
        }
        else if(ok==0)
        {
            sol[indice]=v[i];
            i=ant[i];
            indice--;
        }
        else
        {
            i--;
        }
    }
    for(int i=1;i<=maxi;i++)
    {
        fout<<sol[i]<<" ";
    }
    return 0;
}