Pagini recente » Cod sursa (job #1414595) | Cod sursa (job #1734934) | Cod sursa (job #1522629) | Cod sursa (job #855959) | Cod sursa (job #381174)
Cod sursa(job #381174)
#include <fstream>
#include <set>
using namespace std;
ifstream in("secv.in");
ofstream out("secv.out");
long n,x[5001],i,l[5001],p,minim,j,prev;
set<long> a;
set<long>::iterator it;
int main()
{
in>>n;
for(i=1; i<=n; i++)
{
in>>x[i];
a.insert(x[i]);
}
/*for(i=1;i<=n; i++)
if(x[i] == *a.begin())
l[i] = 1;
else
{
it = a.find(x[i]);
it--;
p=0;
for(j=1; j<i; j++)
if(x[j] == *it && l[j]!=n+1 && (p==0 || l[j]<l[p]))
p=j;
if(p!=0)
l[i]=l[p]+(i-p);
else
l[i]=n+1;
}*/
it = a.begin();
for(i=1; i<=n; i++)
if(x[i] == *it)
l[i] = 1;
for(it++; it!=a.end(); it++)
{
prev = *(--it);it++;
p=0;
for(i=1; i<=n; i++)
if(x[i] == prev)
p=i;
else if(x[i]==*it)
l[i] = l[p]+(i-p);
}
//for(i=1; i<=n; i++)
//out<<l[i]<<' ';
minim = -1;
for(i=1; i<=n; i++)
if(x[i] == *a.rbegin() && (minim == -1 || minim > l[i]))
minim = l[i];
out<<minim;
return 0;
}