Pagini recente » Cod sursa (job #317946) | Cod sursa (job #3260483) | Cod sursa (job #2168953) | Cod sursa (job #366524) | Cod sursa (job #483893)
Cod sursa(job #483893)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("secv.in");
ofstream g("secv.out");
int v[5001],a[5001],valid[5001],sol[5001],poz[5001],ast,n,m,r,x,minim;
int caut(int x, int n)
{
int pas=1<<16,i;
for(i=0;pas;pas>>=1)
if(i+pas<=n&&a[i+pas]<x)
i+=pas;
return i+1;
}
int main()
{
int i;
f>>n;
minim=n+1;
for(i=1;i<=n;i++)
{
f>>v[i];
a[i]=v[i];
}
sort(a,a+n+1);
m=1;
for(i=2;i<=n;i++)
if(a[i]!=a[m])
a[++m]=a[i];
valid[0]=true;
for(i=1;i<=n;i++)
{
ast=caut(v[i],m);
if(valid[ast-1])
{
valid[ast]=true;
poz[ast]=i;
if(v[i]==a[1])
sol[ast]=1;
else
sol[ast]=sol[ast-1]+i-poz[ast-1];
if(v[i]==a[m]&&minim>sol[m])
minim=sol[m];
}
}
g<<minim;
return 0;
}