Cod sursa(job #1652107)

Utilizator DenisVieriuDenis Vieriu DenisVieriu Data 14 martie 2016 17:36:06
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.56 kb
#include <iostream>
#include <fstream>
using namespace std;
int a[100001],urmatorul[100001],maxime[100001];
int main()
{
    ifstream f("scmax.in");
    ofstream g("scmax.out");
    int i,j,n;
    f>>n;


    for(i=0;i<n;i++)
        f>>a[i];



   maxime[n-1]=1;
    urmatorul[n-1]=-1;
    int maxx=0,poz=0;
    for(i=n-2;i>=0;i--)
    {
        maxime[i]=1;
        urmatorul[i]=-1;
        for(j=i+1;j<n;j++)
            if(a[i]<a[j]&&maxime[i]<=maxime[j])
        {
            maxime[i]=maxime[j]+1;
            urmatorul[i]=j;
            if(maxx<maxime[i])
            {
                maxx=maxime[i];
                poz=i;
            }
        }
    }



    g<<maxx<<'\n';
    g<<a[poz]<<" ";
    for(i=1;i<maxx;i++)
    {
        poz=urmatorul[poz];
        g<<a[poz]<<" ";
    }
    delete []maxime;
    delete []urmatorul;
    /*maxime[0]=1;
    urmatorul[0]=-1;
    for(i=1;i<n;i++)
    {
        maxime[i]=1;
        urmatorul[i]=-1;
        for(j=0;j<i;j++)
            if(a[j]<a[i]&&maxime[i]<=maxime[j])
        {
            maxime[i]=maxime[j]+1;
            urmatorul[i]=j;
        }
    }
    int maxx=0,poz=0;
    for(i=1;i<n;i++)
        if(maxx<maxime[i])
    {
        maxx=maxime[i];
        poz=i;
    }
    nou[maxx-1]=a[poz];
    for(i=maxx-2;i>=0;i--)
    {
        poz=urmatorul[poz];
        nou[i]=a[poz];
    }
    delete []maxime;
    delete []urmatorul;
    g<<maxx<<'\n';
    for(i=0;i<maxx;i++)
        g<<nou[i]<<" ";
   delete []nou;
   delete []a;*/

    return 0;
}