Pagini recente » Cod sursa (job #1907707) | Cod sursa (job #1662842) | Cod sursa (job #2902624) | Cod sursa (job #638698) | Cod sursa (job #1852235)
#include <cstdio>
#include<algorithm>
using namespace std;
int v[5005];
struct secv
{
int x,y;
};
secv v1[5005];
bool cmp(secv a,secv b)
{
return a.x<b.x;
}
int v2[5005];
int main()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
int n,i,j,k,min,max,st,dr,val,l;
scanf("%d",&n);
for(i=1; i<=n; i++){
scanf("%d",&v[i]);
v1[i].x=v[i];
v1[i].y=i;
}
sort(v1+1,v1+n+1,cmp);
j=1;
v1[0].x=v1[1].x;k=0;
for(i=1; i<=n; i++)
{
if(v1[i].x!=v1[i-1].x)
j++;
if(j==1)
v2[++k]=v1[i].y;
v[v1[i].y]=j;
}
max=j;
min=5001;
for(i=1; i<=k; i++)
{
st=v2[i];
dr=st;
val=v[st];
while(dr<=n && val!=max){
val++;
while(v[dr]!=val && dr<=n)
dr++;;
if(dr>n)
break;
if(val==max)
{
l=dr-st+1;
if(l<min)
min=l;
break
}
}
}
if(min==5001)
min=-1;
printf("%d",min);
return 0;
}