Cod sursa(job #872598)

Utilizator vladteodor97Cirstina Vlad vladteodor97 Data 6 februarie 2013 12:59:58
Problema Subsir crescator maximal Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.97 kb
#include<fstream>

using namespace std;
int a[100001],n,i,x[100001],p;
void cmlsc(int a[],int n,int x[],int &p)
{
    int b[100001],c[100001],i,j,amax,poz;
    for(i=n;i>=1;i--)
    {
        amax=0;
        poz=0;
        for(j=i+1;j<=n;j++)
        {
            if(a[i]<=a[j] && b[j]>amax)
            {
                amax=b[j];
                poz=j;
            }
            
        }
		b[i]=1+amax;
		c[i]=poz;
    }
    p=b[1];poz=1;
    for(i=2;i<=n;i++)
    {

        if(b[i]>p)
        {

            p=b[i];
            poz=i;
        }
    }
    j=0;
    for(i=poz;i!=0;i=c[i])
    {
        j++;
        x[j]=a[i];
    }
	
    
}
int main()
{	
    fstream fin,fout;
	fin.open("scmax.in",ios::in);
	fout.open("scmax.out",ios::out);
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>a[i];

    }
	
    cmlsc(a,n,x,p);
	for(i=1;i<=p;i++)
	{
		fout<<" "<<x[i];
	}
	fin.close();
	fout.close();
    return 0;

}