Cod sursa(job #851133)

Utilizator elfusFlorin Chirica elfus Data 9 ianuarie 2013 16:19:07
Problema Secv Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#include <map>
#include <algorithm>

using namespace std;

int x[5100], uq[5100];
map <int, bool> used;

int main()
{
	int i, j, n = 0, N;
	
	freopen("secv.in", "r", stdin);
	freopen("secv.out", "w", stdout);
	
	scanf("%d", &N);
	for (i = 1; i <= N; i ++)
	{
		scanf("%d", &x[i]);
		if (used[x[i]] == 0)
		{
			uq[++ n] = x[i];
			used[x[i]] = 1;
		}
	}
	
	sort(uq + 1, uq + n + 1);
	
	int best = 1 << 30;
	
	for (i = 1; i <= N; i ++)
		if (x[i] == uq[1])
		{
			int matched = 1;
			for (j = i; j <= N + 1; j ++)
			{
				if (matched == n)
				{
					int ret = j - i;
					if (ret < best)
						best = ret;
					break;
				}
				if (x[j] == uq[matched + 1])
					matched ++;
			}	
		}

	printf("%d", best);
	return 0;
}