Cod sursa(job #497009)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 1 noiembrie 2010 11:51:41
Problema Secv Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream>
#include<algorithm>
#define NMAX 5001

using namespace std;

struct vezi
{
	int val, o;
}aux[NMAX];

int a[NMAX], i, n, b[NMAX], nr, p, mn, j;

int cmp(vezi x, vezi y)
{
	return x.val<y.val;
}

int main()
{
	ifstream f("secv.in");
	ofstream g("secv.out");
	f>>n;
	for (i=1; i<=n; ++i) {f>>a[i];aux[i].val=a[i];aux[i].o=i;}
	
	sort(aux+1, aux+n+1, cmp);
	
	aux[0].val=aux[1].val;
	aux[n+1].val=aux[n].val+10;
	nr=0;
	for (i=1; i<=n+1; ++i)
		if (aux[i].val!=aux[i-1].val) b[++nr]=aux[i-1].val;
	if(aux[1].val==aux[n].val)
	{
		g<<"-1\n";
		return 0;
	}
	i=1;mn=NMAX;
	while (aux[i].val==aux[1].val)
	{
		j=aux[i].o+1;p=1;
		while (p<nr && j<=n)
		{
			if (a[j]==b[p+1]) ++p;
			++j;
		}
		if (p==nr && mn>j-aux[i].o+1)mn=j-aux[i].o;
		++i;
	}
	if (mn!=NMAX) g<<mn<<"\n";
	else g<<"-1\n";
	f.close();
	g.close();
	return 0;
}