Code: Select all
#include<iostream>
#define INF 1<<20
#define min(a,b) (a<b?a:b)
#define MAX 100
using namespace std;
int B[]={-INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF};
int bin(int key)
{
int v;
int lo=0;
int hi=11;
int mid;
while(lo<=hi)
{
mid=lo+(hi-lo)/2;
if(B[mid]>key)
{
v=mid;
hi=mid-1;
}
else
lo=mid+1;
}
return v;
}
int main()
{
int i;
int arr[]={9,2,5,4,3,7,11,8,10,13,1};
int max=-1;
for(i=0;i<11;i++)
{
int pos=bin(arr[i]);
B[pos]=arr[i];
if(max<pos)max=pos;
}
cout<<max<<endl;
return 0;
}