Pagini recente » Cod sursa (job #3192804) | Cod sursa (job #1480529) | Cod sursa (job #2351811) | Cod sursa (job #577808) | Cod sursa (job #1545474)
#include <iostream>
#include <fstream>
#include <algorithm>
#define nmax 5050
#define inf 2000000004
using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
long l[nmax],f[nmax],v[nmax],aux[nmax];
int main()
{long i,j,n,minim=inf,maxim=-inf;
fin>>n;
for(i=1;i<=n;i++)
{
fin>>v[i];
if(v[i]<minim)minim=v[i];
if(v[i]>maxim)maxim=v[i];
}
l[n]=1;f[n]=n;
for(i=n-1;i;i--)
for(l[i]=1,f[i]=i,j=i+1; j<=n; j++)
if(v[i]<v[j])
if(l[i]<l[j]+1)
{l[i]=l[j]+1;f[i]=f[j];}
for(i=1;i<=n;i++)aux[i]=v[i];
sort(aux+1,aux+n+1);
long cont=0;
i=1;
while(i<=n)
{cont++;
while(aux[i]==aux[i+1] && i<=n)i++;
i++;
}
int rez=inf;
for(i=1;i<=n;i++)
if(v[i]==minim && v[f[i]]==maxim && l[i]==cont)
if(f[i]-i+1 < rez){rez=f[i]-i+1;}
if(n==0)fout<<0;
else if(rez!=inf)fout<<rez;
else fout<<-1;
}