Pagini recente » Cod sursa (job #1756604) | Cod sursa (job #19500) | Cod sursa (job #2305111) | Cod sursa (job #2769855) | Cod sursa (job #347065)
Cod sursa(job #347065)
#include<fstream>
#include<algorithm>
using namespace std;
const char iname[]="secv.in";
const char oname[]="secv.out";
const int maxn=5007;
ifstream f(iname);
ofstream g(oname);
int a[maxn],s[maxn],p[maxn],l[maxn],i,j,n,k,step,mint;
int main()
{
f>>n;
for(i=1;i<=n;++i)
f>>a[i],p[i]=a[i];
sort(p+1,p+n+1);
s[++k]=p[1];
for(i=2;i<=n;++i)
{
if(p[i]!=p[i-1])
s[++k]=p[i];
p[i-1]=0;
}
p[n]=0;
mint=0x3f3f3f3f;
for(i=1;i<=n;++i)
{
for(step=1;step<=k;step<<=1);
for(j=0;step;step>>=1)
if(j+step<=k&&s[j+step]<=a[i])
j+=step;
if(j==1)
p[1]=i,l[1]=i-1;
else
if(p[j-1])
p[j]=i,l[j]=l[j-1];
if(p[j]&&j==k&&p[j]-l[j]<mint)
mint=p[j]-l[j];
}
if(n==0)
mint=0;
if(mint==0x3f3f3f3f)
mint=-1;
g<<mint<<"\n";
f.close();
g.close();
return 0;
}