Cod sursa(job #1207042)

Utilizator an_drey_curentandreycurent an_drey_curent Data 11 iulie 2014 21:47:53
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<stdio.h>
FILE *in, *out;
int N, A[100005], PRE[100005], BEST[100005], finalIndex;
void read()
{
	in = fopen("scmax.in", "rt");
	out = fopen("scmax.out", "wt");

	fscanf(in, "%d", &N);
	for (int i = 0; i < N; i++)
		fscanf(in, "%d", &A[i]);
}
void process()
{
	for (int i = 0; i < N; i++)
	{
		BEST[i] = 1;
		int maxLocal = 0;
		for (int j = 0; j < i; j++)
		{
			if (A[j] < A[i] && BEST[j] > maxLocal)
			{
				BEST[i] = 1 + BEST[j];
				PRE[i] = j;
				maxLocal = BEST[j];
			}
		}
	}

	int max = 0;
	for (int i = 0; i < N; i++)
	{
		if (max < BEST[i])
		{
			max = BEST[i];
			finalIndex = i;
		}
	}
	fprintf(out, "%d\n", max);
}
void write(int index)
{
	if (PRE[index] > 0)
		write(PRE[index]);

	fprintf(out, "%d ", A[index]);
	
}
int main()
{
	read();
	process();
	write(finalIndex);
	return 0;
}