Cod sursa(job #442496)

Utilizator RazvanSSavu Razvan RazvanS Data 14 aprilie 2010 17:53:20
Problema Secv Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

#define NMax 5005

int N, S[NMax], v[NMax], lst[NMax], bst, D[NMax];


int main(void)
{
	int i, h = 1;

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

	scanf("%d", &N);
	for (i = 1; i <= N; ++i)
	{
		scanf("%d", &v[i]);
		lst[i] = v[i];
	}
	
	sort(lst+1, lst+N+1);
	for (i = 2; i <= N; ++i)
		if (lst[i] != lst[h])
			lst[++h] = lst[i];
	
	for (i = 1; i <= N; ++i)
		v[i] = lower_bound(lst+1, lst+h+1, v[i])-lst;
	
	bst = N;
	for (i = 1; i <= N; ++i)
	{
		if ( v[i] == 1 ) S[v[i]] = i;
		else S[v[i]]=S[v[i] - 1];
		if (v[i]==h && bst > (i - S[v[i]] + 1 ))  bst = i - S[v[i]] + 1;
		
	}
	printf("%d\n", bst);
	return 0;
}