Cod sursa(job #126375)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 21 ianuarie 2008 22:57:55
Problema Secv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

long i, n, v[5010], a[5010], poz1, poz2, min, j, p, y[5010];

int cmp(const void *a, const void *b) {
	return ( *(int *)a - *(int *)b );
}

int main() {
	freopen("secv.in", "r", stdin);
	freopen("secv.out", "w", stdout);
	scanf("%ld", &n);
	for (i = 1; i <= n; ++i) {
		scanf("%ld", &v[i]);
		y[i] = v[i];
	}
	qsort(v + 1, n, sizeof(v[0]), cmp);
	v[0] = 2000000002;
	for (i = 1; i <= n; ++i) {
		if (v[i] != v[i - 1]) {
			a[++a[0]] = v[i];
		}			
	}
	/*for (i = 1; i <= a[0]; ++i) {
		printf("%ld ", a[i]);
	}
	printf("\n");*/
	min = 2000000001;
	for (i = 1; i <= n; ++i) {
		if (y[i] == a[1]) {
			p = 2;
			poz1 = i;
			for (j = i + 1; j <= n; ++j) {
				if (y[j] == a[p]) {
					++p;
				}
				if (p == a[0] + 1) {
					poz2 = j;
				}
			}
			if (poz2 - poz1 + 1 < min && p == a[0] + 1) {
				min = poz2 - poz1 + 1;
			}
		}			
	}
	printf("%ld\n", min);
	return 0;
}