Cod sursa(job #359732)

Utilizator petroMilut Petronela petro Data 28 octombrie 2009 10:26:33
Problema Subsir crescator maximal Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
FILE *f=fopen("scmax.in","r");
FILE *g=fopen("scmax.out","w");

#define M 100000
long n,x[M],l[M];

void cit()
{
	long i;
	fscanf(f,"%ld",&n);
	for(i=1;i<=n;i++)
	    fscanf(f,"%ld",&x[i]);
		
	fclose(f);
}

int main()
{
	long i,k,max,imax;
	cit();
	
	l[n]=1;
	
	for(k=n-1;k>=1;k--)
	{
		l[k]=1;
		i=k;		
		
		do
		{i++;}
		while(x[k]>x[i] && i<n);
		
		if(x[k]<=x[i]) l[k]=l[i]+1;
	}
	
	max=0;
	for(i=1;i<=n;i++)
		if(l[i]>max) {max=l[i];
	                  imax=i;}
		
	fprintf(g,"%ld\n",max);
	
	max=x[imax];
	for(i=imax+1;i<=n;i++)
		if(x[i]>=max) {max=x[i];
	                   fprintf(g,"%ld ",max);}
		
	fprintf(g,"\n");
	fclose(g);
	return 0;
}