Cod sursa(job #1847581)

Utilizator PondorastiAlex Turcanu Pondorasti Data 14 ianuarie 2017 19:11:33
Problema Secv Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>
#include <algorithm>
using namespace std;
struct test {
	int nr,poz;
}a[5005];
int v[5005],lmin=5005;
bool Comp(test a, test b) {
	return a.nr<b.nr;}
int main() {
	freopen("secv.in","r",stdin);
	freopen("secv.out","w",stdout);
	int n,i,j;
    scanf("%d",&n);
    for(int i=1;i<=n;i++) {
		scanf("%d",&a[i].nr);
		a[i].poz=i;}
	sort(a+1,a+1+n,Comp);
	int k=0;
	a[0].nr=-1;
	for(int i=1;i<=n;i++) {
		if(a[i-1].nr!=a[i].nr)
			k++;
		v[i]=k;}
	for (i = 1; i <= n; ++i)
		if (v[i] == 1) {
		int p = 2;
		for (j = i + 1; j <= n && p <= k; ++j){
            if (v[j] == 1 && p == 2)
			    i = j;
            if (v[j] == p)
                ++p;}
      if (p > k)
        lmin = min(lmin, j - i);}
    if(lmin==5005)
		lmin=-1;
	printf("%d",lmin);
    return 0;
}