Pagini recente » Cod sursa (job #2586231) | Cod sursa (job #306174) | Cod sursa (job #2141215) | Cod sursa (job #1563730) | Cod sursa (job #1752745)
# include <fstream>
# include <algorithm>
# define DIM 5010
# define INF 1000000000
using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
int v[DIM],sor[DIM],us[DIM],l[DIM],n,k,i,j,st,dr,mij,maxim,minim;
int main () {
fin>>n;
for(i=1;i<=n;i++){
fin>>v[i];
sor[i]=v[i];
maxim=max(maxim,v[i]);
}
sort(sor+1,sor+n+1);
us[++k]=sor[1];
for(i=2;i<=n;i++)
if(sor[i]!=sor[i-1])
us[++k]=sor[i];
for(i=1;i<=n;i++){
st=1;
dr=k;
while(st<=dr){
mij=(st+dr)/2;
if(us[mij]<v[i])
st=mij+1;
else
dr=mij-1;
}
v[i]=st;
}
for(i=1;i<=n;i++){
if(v[i]==1){
l[i]=i;
continue;
}
for(j=1;j<i;j++)
if(v[j]+1==v[i])
l[i]=max(l[i],l[j]);
if(l[i]==0)
l[i]=-INF;
}
minim=INF;
for(i=1;i<=n;i++)
if(v[i]==k&&i-l[i]+1<minim)
minim=i-l[i]+1;
if(minim==INF)
fout<<-1;
else
fout<<minim;
fout<<"\n";
return 0;
}