Cod sursa(job #387805)

Utilizator Cristi09Cristi Cristi09 Data 28 ianuarie 2010 14:48:46
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<stdio.h>
int a[100],best[100],n,pos=n-1;
FILE*g=fopen("scmax.out","w");
void afis(int p)
{
   if(p>=n)return;
   if(best[p]==best[p-1])afis(p+1);
   else
   {fprintf(g,"%d ",a[p]);
	afis(p+1);}
}
int dinamic()
{
	best[n-1]=1;
	int i,j,max=1;
	for(i=n-2;i>=0;--i)
	{   best[i]=1;
		for(j=i+1;j<n;++j)
		if(best[i]<best[j]+1&&a[i]<a[j])
		{
			best[i]=best[j]+1;
			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(pos);
	fclose(g);
}