Pagini recente » Cod sursa (job #2853759) | Cod sursa (job #1306697) | Cod sursa (job #2243129) | Cod sursa (job #2576119) | Cod sursa (job #656143)
Cod sursa(job #656143)
#include <cstdio>
int main()
{
int n,v[5005],sol[5005],min,poz,i,j,list[5005],nr=1;
freopen("subsir2.in","r",stdin);
freopen("subsir2.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;++i) scanf("%d",&v[i]);
list[1]=n;sol[n]=1;
for (i=n-1;i>0;--i)
{
if ((nr<1) || (list[1]<v[i]))
sol[i]=1,list[nr=1]=i; else
{
int a=1,b=nr,poz=1,c;
while (a<=b)
{
c=(a+b)/2;
if (v[list[c]]<v[i]) b=c-1; else
{
a=c+1;
if (c>poz) poz=c;
}
}
sol[i]=1+sol[list[poz]];
}
while ((nr) && (v[list[nr]]<=v[i])) --nr;
list[++nr]=i;
}
j=v[1];min=sol[1];poz=1;
for (i=2;i<=n;++i)
if (v[i]<j)
{
j=v[i];
if (sol[i]<min) min=sol[i],poz=i;
}
printf("%d\n",min);
return 0;
}