Pagini recente » Cod sursa (job #2125212) | Cod sursa (job #29581) | Cod sursa (job #1231394) | Cod sursa (job #1102555) | Cod sursa (job #2245644)
#include <bits/stdc++.h>
#define Dim 5002
#define Max 2000000000
using namespace std;
ifstream f("secv.in");
ofstream g("secv.out");
int N;
long A[Dim],S[Dim],cnt,poz,ans=Max,el;
struct info
{
int start;
long nr;
}V[Dim];
int CB(int x)
{
int st=1,dr=N;
while(st<dr)
{
int mij=(st+dr)/2;
if(x<=S[mij]) dr=mij;
else st=mij+1;
}
return st;
}
int main()
{
f>>N;
for(int i=1;i<=N;i++)
{
f>>A[i];
S[i]=A[i];
}
sort(S+1,S+N+1);
for(long i=2;i<=N;i++) el=V[i].nr-V[i-1].nr;
if(el==1) g<<1;
else
for(long i=1;i<=N;i++)
{
if(A[i]==S[1])
{
V[++cnt].start=i;
V[cnt].nr=A[i];
}
else
{
poz=CB(A[i]);
el=S[poz-1];
for(long j=1;j<=cnt;j++)
{
if(V[j].nr==el) V[j].nr=A[i];
if(V[j].nr==S[N])
{
ans=min(ans,i-V[j].start+1);
V[j].nr=-2;
}
}
}
}
if(ans!=Max)
g<<ans;
else g<<-1;
}