Pagini recente » Cod sursa (job #930189) | Cod sursa (job #647968) | Cod sursa (job #1719720) | Cod sursa (job #2267948) | Cod sursa (job #1047566)
#include <stdio.h>
#include <stdlib.h>
#define fr(i,a,b) for(int i=a;i<b;++i)
#define MOD 65537
#define N 5000
int H[MOD];
int a[N],b[N];
void push(int x){
int i=x%MOD;
while(H[i])i=(i+1)%MOD;
H[i]=x;
}
bool get(int x){
int i=x%MOD;
while(H[i]&&H[i]!=x)i=(i+1)%MOD;
return H[i];
}
int c(const void*a,const void*b){return *(int*)a-*(int*)b;}
int main(){
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
int n,B=0,m=-1;
scanf("%i",&n);
fr(i,0,n){
scanf("%i",a+i);
++a[i];
if(!get(a[i])) b[B++]=a[i],push(a[i]);
}
qsort(b,B,sizeof(int),c);
int j=0;
fr(i,0,n){
if(a[i]==b[j]){
++j;
if(j==B){
//search back
int k=i;
while(j){
if(a[k]==b[j-1]) --j;
--k;
}
if(m==-1||m>i-k)m=i-k;
}
}
}
printf("%i\n",m);
return 0;
}