Pagini recente » Cod sursa (job #2041075) | Cod sursa (job #363687) | Cod sursa (job #2879109) | Cod sursa (job #286163) | Cod sursa (job #2245626)
#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-1;
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=1;i<=N;i++)
{
if(A[i]==S[1])
{
V[++cnt].start=i;
V[cnt].nr=A[i];
}
else
{
poz=CB(A[i]);
el=A[i];
while(el==A[i]) el=S[--poz];
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;
}
}
}
}
g<<-1;
}