Cod sursa(job #2553614)

Utilizator Mihai_Razvan_IonutMihai Razvan Ionut Mihai_Razvan_Ionut Data 22 februarie 2020 10:28:53
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#define NMAX 100002


using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");
int a[NMAX];
int lgmax[NMAX];
int urm[NMAX];
int n;
int main()
{
    int i, j, maxim, pozmax;
    fin>>n;
    for (i=1; i<=n; i++) fin>>a[i];
    lgmax[n]=1; urm[n]=0;
    for (i=n-1; i>0; i--)
    {
        lgmax[i]=1; urm[i]=0;
        for (j=i+1; j<=n; j++)
            if (a[i]<a[j] && lgmax[i]<1+lgmax[j])
                {
                 lgmax[i]=1+lgmax[j];
                 urm[i]=j;
                }
    }
    ///lung max
    maxim=lgmax[1]; pozmax=1;
    for (i=2; i<=n; i++)
    if (maxim<lgmax[i]) {maxim=lgmax[i]; pozmax=i;}
    fout<<maxim<<'\n';
    ///afis subsirul de val de lung maxima
    i=pozmax;
    while (i)
    {
        fout<<a[i]<<' ';
        i=urm[i];
    }
    fout<<'\n';
    fout.close();

    return 0;
}