Cod sursa(job #266322)

Utilizator shnakoVlad Schnakovszki shnako Data 25 februarie 2009 11:38:07
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <stdio.h>
#define TOP 100001
FILE *f, *g;
long v[TOP], l[TOP], p[TOP], n, i, j, max, poz, x;
int main(void)
{
f=fopen("scmax.in","r");
g=fopen("scmax.out","w");
fscanf(f, "%ld", &n);
for (i=1;i<=n;i++)
	fscanf(f, "%ld", &v[i]);
for (i=n;i>0;i--)
	for (j=i;j<=n;j++)
		if (v[i]<v[j]&&l[j]+1>l[i])
			{
			l[i]=l[j]+1;
			p[i]=j;
			}
max=poz=0;
for (i=1;i<=n;i++)
	if (max<l[i])
		{
		max=l[i];
		poz=i;
		}
x=poz;
fprintf(g, "%ld\n", max+1);
while (p[x])
	{
	fprintf(g, "%ld ", v[x]);
	x=p[x];
	}
fprintf(g, "%ld", v[x]);
fcloseall();
return 0;
}