Cod sursa(job #584299)

Utilizator prisonbreakMichael Scofield prisonbreak Data 24 aprilie 2011 21:39:34
Problema Secv Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
#include <algorithm>

#define inf 0x3f3f3f3f
#define MAXN 5010
using namespace std;

int A[MAXN], C[MAXN], ord[MAXN], res, N;
inline bool cmp (const int &a, const int &b)
{
	return A[a] < A[b];
}
int main ()
{


	freopen ("secv.in", "r", stdin);
	freopen ("secv.out", "w", stdout);

	scanf ("%d\n", &N);
	
	int i, x, y;
	for (i = 1; i <= N; i++) {
		scanf ("%d ", &A[i]);
		ord[i] = i;
	}

	sort (ord + 1, ord + N + 1, cmp);
	
	for (i = 1; i <= N; i++)
		if (A[ord[i]] != A[ord[i - 1]])
			C[++C[0]] = A[ord[i]];
	
	res = inf;
	for (i = 1; i <= N; i++) {

		x = 1; y = i;
		while (y <= N) {
			if (A[y] == C[x])
				++x;
			if (x > C[0]) {
				res = min (res, y - i + 1);
				break;
			}
			y += 1;
		}
	}
	printf ("%d\n", res != inf ? res : -1);
	return 0;
}