Pagini recente » Cod sursa (job #2265121) | Cod sursa (job #2817426) | Cod sursa (job #2293022) | Cod sursa (job #2674081) | Cod sursa (job #877497)
Cod sursa(job #877497)
#include <stdio.h>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
int a[5005];
set<int> aSet;
vector<int> pozVector;
int start[5005];
int n;
int min(int a,int b){return a<b?a:b;}
int main(){
int x;
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
scanf("%d",&n);
int myMin=n+1;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
aSet.insert(a[i]);
}
for(set<int>::iterator it = aSet.begin();it!=aSet.end();it++){
pozVector.push_back(*it);
}
for(int i=1;i<=n;i++){
start[i]=-1;
int poz = lower_bound(pozVector.begin(),pozVector.end(),a[i])-pozVector.begin();
if(poz==0) start[i]=i;
else{
for(int j=i-1;j>=1;j--){
if(a[j]==pozVector[poz-1]){
start[i]=start[j];
break;
}
}
}
if(start[i]!=-1 && a[i]==pozVector[pozVector.size()-1])
myMin=min(myMin,i-start[i]+1);
}
if(myMin!=n+1)
printf("%d",myMin);
else
printf("-1");
return 0;
}