#include<stdio.h>
int a[1005];
int arr[1005];
int len;
int Binary_search(int e)
{
int l, r, mid;
l = 0;
r = len;
while(l <= r)
{
mid = (l + r) >> 1;
if(arr[mid] > e) r = mid - 1;
else l = mid + 1;
}
return l;
}
int main()
{
int n, pos;
scanf("%d", &n);
for(int i = 0; i < n; i++)
scanf("%d", &a[i]);
arr[0] = a[0];
len = 0;
for(int i = 1; i < n; i++)
{
if(a[i] > arr[len]) arr[++len] = a[i];
else
{
pos = Binary_search(a[i]);
arr[pos] =a[i];
}
}
printf("%d\n", len+1);
return 0;
}
原文:https://www.cnblogs.com/Mrs-Jiangmengxia/p/13056401.html