Cod sursa(job #687703)

Utilizator mihai_bogdaannMihai Bogdan mihai_bogdaann Data 22 februarie 2012 18:18:57
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>

FILE *fin = fopen("scmax.in","r");
FILE *fout = fopen("scmax.out","w");

int indi,a[100001],nr[100001],urm[100001],n,i,j,max,ult,lg;
int main()
{
	fscanf(fin,"%d",&n);
	for(i=1;i<=n;i++)
		fscanf(fin,"%d",&a[i]);
	nr[n] = 1;
	urm[n] = 0;
	for(i=n-1;i>=1;i--)
	{
		ult = 0;
		lg = 1;
		for(j=i+1;j<=n;j++)
		{
			if(a[i]<a[j] && lg <= nr[j])
			{
				lg = nr[j]+1;
				ult = j;
			}
			
		}
		nr[i] = lg;
		urm[i] = ult;
	}
	for(i=1;i<=n;i++)
		if(nr[i]>max)
			max = nr[i],indi=i;
	fprintf(fout,"%d\n",max);
	
	while(urm[indi])
	{
		fprintf(fout,"%d ",a[indi]);
		indi = urm[indi];
	}
	
	fprintf(fout,"%d ",a[indi]);
}