Cod sursa(job #1692154)

Utilizator ArkinyStoica Alex Arkiny Data 20 aprilie 2016 11:49:35
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<fstream>
#include<algorithm>
#include<string.h>
using namespace std;

ifstream in("secv.in");
ofstream out("secv.out");

#define MAX 5010
int v[MAX], l[MAX], E[MAX],O[MAX],D[MAX], E1[MAX], AIB[MAX], N;


int main()
{
	int i;
	in >> N;
	for (int i = 1;i <= N;++i)
	{
		in >> v[i];
		l[i] = v[i];
		O[i] = v[i];
	}
	sort(l + 1, l + N + 1);
	int length = 1;
	for (i = 2;i <= N;++i)
		if (l[length] < l[i])
			l[++length] = l[i];

	for (i = 1;i <= N;++i)
		v[i] = lower_bound(l + 1, l + length + 1, v[i]) - l;

	int mn = (1 << 30);
   
	if (length == 1)
	{
		out << 1;
		return 0;
	}

	for (int i = 1;i <= N;++i)
		if (v[i] == length && E[v[i] - 1] != 0)
			mn = min(mn, i - E[v[i] - 1] + 1);
		else if (v[i] == 1)
			E[v[i]] = i;
		else if (E[v[i] - 1] != 0)
			E[v[i]] = E[v[i] - 1];


	if (mn == (1 << 30))
		out << -1;
	else
		out << mn;

	return 0;
}