Cod sursa(job #1009978)

Utilizator rucarRucareanu Alexandru rucar Data 14 octombrie 2013 01:29:32
Problema Subsir crescator maximal Scor 70
Compilator c Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int *v, *a, i, j, n, max, pozmax;
	FILE *f=fopen("scmax.in","r"), *g=fopen("scmax.out","w");
	fscanf(f,"%d", &n);
	v = (int*)malloc(sizeof(int)*n);
	a = (int*)malloc(sizeof(int)*n);
	for (i = 0; i < n; i++)
	{
		fscanf(f,"%d", &v[i]);
		a[i] = 0;
	}
	a[n - 1] = 1;
	for (i = n - 2; i >= 0; i--)
	{
		max = 0;
		for (j = i + 1; j < n; j++)
		{
			if ((v[i] < v[j]) && (a[j] > max))
			{
				max = a[j];
			}
		}
		a[i] = max + 1;
	}
	max = 0;
	for (i = 0; i < n; i++)
	{
		if (a[i] > max)
		{
			max = a[i];
			pozmax = i;
		}
	}
	fprintf(g,"%d\n%d ", max, v[pozmax]);
	max--;
	i = pozmax+1;
	while (max)
	{
		if ((v[pozmax] < v[i]) && (a[i] == max))
		{
			fprintf(g,"%d ", v[i]);
			max--;
			pozmax = i;
		}
		i++;
	}
	return 0;
}