Cod sursa(job #632580)

Utilizator s8ko14romario s8ko14 Data 11 noiembrie 2011 18:07:22
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<stdio.h>
int main () 
{
	FILE *f=fopen("scmax.in","rt");
	FILE *g=fopen("scmax.out","wt");
	int sir[20],s[20],prec[20],best[20],n,i,j,k,m=0,l=0,maxbest=0,max=0;
	fscanf(f,"%i",&n);
	for(i=0;i<n;i++)
		fscanf(f,"%i",&sir[i]);
	for(i=0;i<n;i++) 
	{
		best[i]=0;
		prec[i]=-1;
	}
	best[0]=1;
	for(i=1;i<n;i++) 
	{
		max=0;
		for(j=0;j<i;j++) 
		{
			if(sir[j]<sir[i] && max<=sir[j]) 
			{ 
				max=sir[j];
				best[i]=1+best[j];
				prec[i]=j; 
			}
			if(sir[j]==sir[i]) 
				best[j]=best[i];
		}
		if(best[i]==0) 
			best[i]=1;
	}
	for(i=0;i<n;i++)
		if(best[i]>maxbest)
			maxbest=best[i];
	j=0;
	for(i=n-1;i>=0;i--)
			if(best[i]==maxbest) 
			{
				s[j++]=sir[i];
				if(prec[i]>=0)
					s[j++]=sir[prec[i]];
				i=prec[i];
				maxbest=maxbest-2;
			} 
	for(i=j-1;i>=0;i--)
		fprintf(g,"%i ",s[i]);
}