Cod sursa(job #704103)

Utilizator wlad95Airinei Vlad wlad95 Data 2 martie 2012 16:25:14
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#include<limits>
using namespace std;
#define NMax 1024
long v[NMax],l[NMax],p[NMax],N;

int maxim (long v[], long n)
{int i,p,m=-LONG_MAX;
for(i=1;i<=n;i++)
	if(v[i]>m)
		m=v[i],p=i;
return p;
}
int main ()
{int i,j,max=0,poz,ok=0;
ifstream in ("scmax.in");
ofstream out ("scmax.out");
in>>N;
for(i=1;i<=N;i++)
	in>>v[i];
l[N]=1;p[N]=0;
for(i=N-1;i>=1;i--)
	{max=0;
	for(j=i+1;j<=N;j++)
		if(l[j]>max&&v[j]>v[i])
			{max=l[j]; poz=j;}
	if(max==0)
		l[i]=1,p[i]=0;
	else
		l[i]=1+max,p[i]=poz;
	}
poz=maxim(l,N);
out<<l[poz]<<'\n';
do
	{out<<v[poz]<<' ';
	poz=p[poz];
	if(poz==0)
		ok=1;
	}
while(ok==0);
out<<'\n';
in.close();
out.close();
return 0;
}