Cod sursa(job #819183)

Utilizator YoYoxxIftimesei Ioan YoYoxx Data 18 noiembrie 2012 17:15:50
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out ("scmax.out");

int x[100003];
int lmax[100003];
int urm[100003];
long long int ma=0,n,max1,max2;

void rezolvare()
{
    int i,j,k;
    lmax[n]=1;
    urm[n]=-1;
    max2=1;
    max1=n;
    for(i=n-1;i>=1;i--)
    {
        urm[i]=-1;
        lmax[i]=1;
        for(j=i+1;j<=n;j++)
        {
            if(x[i]<x[j])
            {
                if(lmax[i]<lmax[j]+1)
                {
                    lmax[i]=lmax[j]+1;
                    urm[i]=j;
                }
                if(lmax[i]>max2)
                {
                    max1=i;
                    max2=lmax[i];
                }
            }

        }


    }



}






int main()
{
    long long int i,j,a,b,k;
    in>>n;

    for (i=1;i<=n;i++)
    {
        in>>x[i];
    }
    rezolvare();
out<<max2<<"\n";

for(i=max1;i!=-1;i=urm[i])
{
    out<<x[i]<<" ";
}



in.close();
out.close();
return 0;
}