Cod sursa(job #497002)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 1 noiembrie 2010 11:36:56
Problema Secv Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 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;
	i=1;mn=NMAX;
	while (aux[i].val==aux[1].val)
	{
		if (n-aux[i].o+1>=nr)
		{
			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;
	}
	g<<mn<<"\n";
	f.close();
	g.close();
	return 0;
}