Pagini recente » Cod sursa (job #1798121) | Cod sursa (job #3280723) | Cod sursa (job #617507) | Cod sursa (job #2351701) | Cod sursa (job #3242460)
#include <fstream>
#include <map>
using namespace std;
ifstream fcin("secv.in");
ofstream fout("secv.out");
int n,v[10001],d[10001],minx,maxx,minx1,u[10001];
int m[10001];
map <int,int> mp;
int main()
{
fcin>>n;
minx=minx1=(1<<30);
for(int i=1; i<=n; i++)
{
fcin>>v[i];
maxx=max(maxx,v[i]);
minx1=min(minx1,v[i]);
}
int ok;
for(int i=1; i<=n; i++)
{
map<int, int>::iterator j;
ok=0;
for( j = mp.begin(); j != mp.end(); j ++)
{
if(v[i] == j -> first)
{
ok=1;
j--;
u[i]= j -> first;
break;
}
}
if(ok==0)
{
j=mp.end();
u[i]= j -> first;
}
if(v[i]==1)
u[i]=0;
mp[v[i]]=1;
}
for(int i=1; i<=n; i++)
{
for(int j=1; j<i; j++)
{
if(u[i]==v[j] && m[j]>0)
{
d[i]=d[j]+i-j;
m[i]=1;
}
}
if(v[i]==minx1)
{
m[i]=1;
d[i]=1;
}
}
for(int i=1; i<=n; i++)
{
if(d[i]>0 && v[i]==maxx)
{
minx=min(minx,d[i]);
}
}
if(minx<mp.size())
fout<<-1;
else
fout<<minx;
return 0;
}