Cod sursa(job #1124820)

Utilizator anaid96Nasue Diana anaid96 Data 26 februarie 2014 13:55:28
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<stdio.h>

FILE *in,*out;

//constante
const int Nmax=(int)1e5+1;

//variabile
int n,max;
int v[Nmax],best[Nmax];

int main(void)
{
	in=fopen("scmax.in","rt");
	out=fopen("scmax.out","wt");
	
	fscanf(in,"%d",&n);
	
	for(int i=1 ; i<=n ; ++i)
		fscanf(in,"%d",&v[i]);
	
	best[n]=1;
	
	for(int i=n-1; i>=1 ; --i)
	{
		max=0;
		for(int j=i+1 ; j<=n ; ++j)
			if(v[i] < v[j] && best[j]>max)
				max=best[j];
		best[i]=1+max;	
	}
	
	/*for(int i=1;i<=n;i++)
		fprintf(out,"%d ",best[i]);*/
	max=best[1];
	int from=1;
	for(int i=1 ; i<=n ; ++i)
		if(best[i]>max)
		{
			max=best[i];
			from=i;
		}
	fprintf(out,"%d\n",max);	
	fprintf(out,"%d ",v[from]);
	for(int i=from+1 ; i<=n ; ++i)
	{
		if(v[i]>v[from] && max==best[i]+1)
		{			
			fprintf(out,"%d ",v[i]);		
			max--;
		}	
	}
		
	fclose(in);
	fclose(out);
	return 0;
}