Pagini recente » Cod sursa (job #3286215) | Cod sursa (job #2749500) | Cod sursa (job #535753) | Cod sursa (job #1850506) | Cod sursa (job #978243)
Cod sursa(job #978243)
// subsir crescator maximal cu cautare binara
#include <cstdio>
using namespace std;
int i, j, n, lung[10005],cont,maxi,sf,val[10005];
int v[10005];
int minim(int a,int b)
{
if(a<b) return a;
return b;
}
int binary(int st,int dr,int x)
{
int mij;
while(st<=dr)
{
mij=(st+dr)/2;
if(mij==dr || v[mij]>=x && v[mij-1]<x)
{
val[mij]=minim(val[mij],x);
return mij;
}
}
}
int main() {
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
}
for(i=1;i<=n;i++)
{
if(v[i]>val[sf])
{
sf++;
val[sf]=v[i];
lung[i]=sf;
}
else
{
lung[i]=binary(1,sf,v[i]);
}
}
printf("%d\n",sf);
}