Cod sursa(job #387807)

Utilizator Cristi09Cristi Cristi09 Data 28 ianuarie 2010 14:59:55
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>
int a[100000],best[100000],poz[100000],n,pos=n-1;
FILE*g=fopen("scmax.out","w");
void afis()
{
   int i=pos;
   do
   {
		fprintf(g,"%d ",a[i]);
		i=poz[i];
   }while(i!=-1);

}
int dinamic()
{
	best[n-1]=1;
	poz[n-1]=-1;
	int i,j,max=1;
	for(i=n-2;i>=0;--i)
	{   best[i]=1;
		poz[i]=-1;
		for(j=i+1;j<n;++j)
		if(best[i]<best[j]+1&&a[i]<a[j])
		{
			best[i]=best[j]+1;
			poz[i]=j;
			if(max<best[i]){max=best[i];pos=i;}
		}
	}
	return max;
}
int main()
{
	FILE*f=fopen("scmax.in","r");
	fscanf(f,"%d ",&n);
	int i;
	for(i=0;i<n;++i)
	fscanf(f,"%d",&a[i]);
	fclose(f);
	fprintf(g,"%d\n",dinamic());
	afis();
	fclose(g);
}