Cod sursa(job #1294421)

Utilizator ContInfoArena12Vasilescu Alexandru ContInfoArena12 Data 17 decembrie 2014 15:44:33
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>

using namespace std;
ifstream in ("scmax.in");
ofstream out("scmax.out");
int v[2000000],pred[100001],lung[1000000];
void subsir(int p)//reconstruire
{
    if(pred[p]!=0)
        subsir(pred[p]);
    out<<v[p]<<" ";

}



int main()
{

    int n,i,j,lmax,pozmax=1,maxim;
    in>>n;
    for(i=1;i<=n;i++)
        in>>v[i];
    lung[1]=1;
    for(i=2;i<=n;i++)
    {
        lmax=0;
        for(j=1;j<i;j++)
            if(v[j]<v[i])
                if(lung[j]>lmax)
                {
                    lmax=lung[j];
                    pred[i]=j;
                }
        lung[i]=1+lmax;
    }
    maxim = -21;
    for(i=1;i<=n;i++)
        if(lung[i]>maxim)
          {                      //poz maximului
            maxim=lung[i];
            pozmax=i;


          }

    out<<maxim<<"\n";
    subsir(pozmax);

    return 0;
}