Cod sursa(job #785229)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 8 septembrie 2012 10:28:00
Problema Secv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<stdio.h>
#include<fstream>

using namespace std;

#define MAXN 5002

int v[ MAXN ], s[ MAXN ], end [ MAXN ];

int n, i, j, k, res, MAX, nr, ok;

int main()
{
	ifstream f("secv.in");
	
	f >> n;
	
	for(i = 1; i <= n; ++i)
	{
		f >> v[i], ok = 1;
		for(j = 1; j < i; ++j)
			if(v[j] == v[i])
			{
				ok = 0;
				break;
			}
		
		nr += ok;
	}
	
	f.close();
	
	s[n] = 1, end[n] = n;
	
	for(i = n - 1; i >= 1; --i)
	{
		MAX = 0;
		for(j = i + 1; j <= n; ++j)
			if(v[j] > v[i] && s[j] > MAX)
				MAX = s[j], k = j;
		
		s[i] = MAX + 1;
			
		if(!MAX)
			end[i] = i;
		else
			end[i] = end[k];
		
		if(s[i] == nr && end[i] - i + 1 > res)
			res = end[i] - i + 1;
	}
	
	FILE *g = fopen("secv.out", "w");
	
	fprintf(g, "%d\n", res);
	
	fclose(g);
	
	return 0;
}