Cod sursa(job #556368)

Utilizator AnteusPatrascoiu Mihai Anteus Data 16 martie 2011 09:16:52
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <stdio.h>
FILE *f=fopen ("scmax.in", "r");
FILE *g=fopen ("scmax.out", "w");
int n,i,k,poz;
int a[100001],r[100001],q[100001];

void citire(void) {
int i;
fscanf (f, "%d", &n);
for (i=1;i<=n;i++)
	fscanf (f, "%d", &a[i]);
}

int lis() {
int max=0,i,j;

for (i=1;i<=n;i++)
	q[i]=1;

for (i=2;i<=n;i++)
	for (j=1;j<i;j++)
		if (a[i]>a[j] && q[i]<q[j]+1 )
		{
			q[i]=q[j]+1;
			r[i]=j;
		}

for (i=1;i<=n;i++)
	if (max<q[i])
	{
		max=q[i];
		poz=i;
	}
return max;
}

void tip(int k) {
if (k)
{
	tip(r[k]);
	fprintf (g, "%d ", a[k]);
}
}

int main() {
citire();
fprintf (g, "%d\n", lis());
tip(poz);
return 0;
}