Cod sursa(job #463800)

Utilizator GotenAmza Catalin Goten Data 17 iunie 2010 15:28:44
Problema Secv Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<fstream>
#define max_n 5010
using namespace std;
unsigned int a[max_n],b[max_n],h[max_n];
int cmp(int i, int j)
{
	return a[i]<a[j];
}
int main()
{
	int i,j,nr=0,n,unsub,res=10000;
	ifstream read ("secv.in");
	ofstream write ("secv.out");
	read>>n;
	for(i=1;i<=n;++i)
	{
		read>>a[i];
		h[i]=i;
	}
	sort(h+1,h+n+1,cmp);
	i=1;
	while(i<=n)
	{
		++nr;
		j=i;
		while(a[h[i]]==a[h[i+1]])
			++i;
		for(int t=j;t<=i;++t)
			b[h[t]]=nr;
		++i;
	}
	for(j=n;j;--j)
		if(b[j]==nr)
		{
			i=j-1;
			unsub=nr-1;
			while(i&&unsub)
			{
				if(b[i]==unsub)
					--unsub;
				--i;
			}
			res=min(res,j-i);
		}
	if(unsub)
		write<<"-1\n";
	else
		write<<res<<'\n';
	return 0;
}