Pagini recente » Cod sursa (job #973807) | Cod sursa (job #2059555) | Cod sursa (job #2833143) | Cod sursa (job #2410973) | Cod sursa (job #1416720)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream f("secv.in");
ofstream g("secv.out");
int l,n,i,a[5005],y,MAX,b[5005],u[5005],v[5005],MIN=5005;
int caut(int val)
{
int st,dr,m;
st=1,dr=l;
while(st<=dr)
{
m=(st+dr)/2;
if (val==b[m])
return m;
else if (val>b[m]) st=m+1;
else dr=m-1;
}
}
int dfs(int i)
{
while(a[i]!=1 && (i>0))
i=v[i];
return i;
}
int main()
{
f>>n;
for (i=1;i<=n;i++)
f>>a[i],b[i]=a[i];
sort(b+1,b+n+1);
for (i=1;i<=n;i++)
if (b[i]!=b[i-1])
b[++l]=b[i];
for (i=1;i<=n;i++)
a[i]=caut(a[i]);
for (i=1;i<=n;i++)
{
if (u[a[i]-1]!=0) v[i]=u[a[i]-1];
u[a[i]]=i;
}
for (i=1;i<=n;i++)
{
if (a[i]==b[l])
{
y=dfs(i);
if (y!=0)
MIN=min(i-y+1,MIN);
}
}
g<<MIN<<'\n';
return 0;
}