33,007
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#define len 40000
int main()
{
int m,n,i,j,mid,up,down,max;
int a[len],d[len];
scanf("%d",&m);
while(m--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
d[0]=-1;
d[1]=a[0];
max=1;
for(i=1;i<n;i++)
{
down=0;
up=max;
while(down<=up)
{
mid=(up+down)/2;
if(d[mid]<a[i]) down=mid+1;
else up=mid-1;
}
d[down]=a[i];
if(down>max) max++;
}
printf("%d\n",max);
}
return 0;
}