Cod sursa(job #555817)

Utilizator unknownliviuMaria Liviu Valentin unknownliviu Data 15 martie 2011 19:45:14
Problema Secv Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<fstream>
using namespace std;
ifstream in("secv.in");
ofstream out("secv.out");
const int N=5010;
int n,v[N],x[N],vmin=-1,lmin=200000000;
pair<int,int>aux[N];

void read()
{
	in>>n;
	for(int i=1;i<=n;i++)
	{
		in>>aux[i].first;
		aux[i].second=i;
	}
	sort(aux+1,aux+n+1);
}

inline int min(int a,int b)
{
	return a<b?a:b;
}

void solve()
{
	//vmin=aux[n].first;
	int val=1;
	v[aux[1].second]=val;
	for(int i=2;i<=n;i++)
	{
		if(aux[i].first!=aux[i-1].first)
			++val;
		v[aux[i].second]=val;
	}
	vmin=val;
	for(int i=1;i<=n;i++)
	{
		if(v[i]==1)
			x[1] = i;
		else
			x[v[i]]= x[v[i]-1];
		if(v[i]==vmin && x[v[i]]!=0)
			lmin= min( lmin, i-x[v[i]]+1 );
	}

	if(lmin==200000000)
		out<<0;
	out<<lmin;
}

int main()
{
	read();
	solve();
	return 0;
}