Cod sursa(job #294455)

Utilizator Omega91Nicodei Eduard Omega91 Data 2 aprilie 2009 15:53:29
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>
#include <algorithm>
const int NMAX = 5001;

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

int main()
{
	int  unic[NMAX], sir[NMAX], sir2[NMAX];
	short N, i, k = 0, sz, rasp = NMAX, j;
	freopen("secv.in", "r", stdin);
	freopen("secv.out", "w", stdout);
	
	scanf("%hd", &N);
	
	if (!N) { printf("0\n"); return 0; }
	
	for (i = 0; i != N; ++i) {
		scanf("%d ", sir + i);
		sir2[i] = sir[i];
	}
	std::sort(sir2, sir2 + N);
	
	k = 0; unic[k++] = sir2[0];
	
	--N;
	for (i = 0; i != N; ++i)
		if (sir2[i] != sir2[i + 1]) {
			unic[k++] = sir2[i + 1];
		}
	++N;
	
	sz = k;
	for (i = 0; i != N; ++i)
		if (sir[i] == unic[k = 0]) {
			for (j = i + 1, k = 1; j != N && k != sz; ++j)
				if (sir[j] == unic[k]) k++;
			if (k == sz) rasp = min(rasp, j - i);
		}
	if (rasp == NMAX) rasp = -1;
	printf("%d\n", rasp);
		
	return 0;
}