Cod sursa(job #548147)

Utilizator S7012MYPetru Trimbitas S7012MY Data 7 martie 2011 09:33:11
Problema Secv Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define x first
#define y second
#define DN 5005
using namespace  std;

typedef pair<int, int> PER;

PER s[DN];
int n,v[DN],p[DN];

int main()
{
	ifstream f("secv.in");
	ofstream g("secv.out");
	f>>n;
	for(int i=1; i<=n; ++i) {
		f>>s[i].x;
		s[i].y=i;
	}
	sort(s+1,s+n+1);
	v[s[1].y]=1;
	int val=1;
	for(int i=2; i<=n; ++i) {
		if(s[i].x!=s[i-1].x) ++val;
		v[s[i].y]=val;
	}
	int lg=9999;
	for (int 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 && lg>=i-p[v[i]]+1) lg=i-p[v[i]]+1;	
		}
	}
	g<<(lg!=9999) ? lg : -1;
	return 0;
}