Cod sursa(job #546740)

Utilizator drujbarultudorTudor Mihai Munteanu drujbarultudor Data 5 martie 2011 14:11:51
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
const int N=5003;
vector < pair <int,int> > x(N);
int n,m,i,r,val;
int p[5003],v[5003];
int main()
{
	freopen("secv.in","r",stdin);
	freopen("secv.out","w",stdout);
	scanf("%d",&n);
	r=5010;
	for (i=1;i<=n;i++)
	{
		scanf("%d",&x[i].first);
		x[i].second=i;
	}
	sort (&x[1],&x[n+1]);
	v[x[1].second]=1;
	val=1;
	for(i=2;i<=n;i++)
	{
		if (x[i].first!=x[i-1].first) ++val;
		v[x[i].second]=val;
	}
	for (i=1;i<=n;i++)
	{
		if (v[i]==1)
			p[v[i]]=i;
		else 
			p[v[i]]=p[v[i]-1];
		if (v[i]==val)
		{
			if (p[v[i]]!=0)
				if (r>=i-p[v[i]]+1)
			r=i-p[v[i]]+1;	
		}
	}
	if (r==5010) 
		printf("-1");
	else
		printf("%d",r);
	return 0;
}