#include <iostream> #define MAXN 500005 using namespace std; int T[MAXN]; int binary_search(int * a, int size, int num) ; int main() { //freopen("acm.acm","r",stdin); int i; int index; int test; int num; int place; int x; cin>>test; while(test --) { index = 1; cin>>num; cin>>x; T[0] = x; for(i = 1; i < num; ++ i) { cin>>x; if(x <= T[0]) { T[0] = x; } else if(x > T[index-1]) { T[index ++] = x; } else { place = binary_search(T,index,x); T[place] = x; } } cout<<index<<endl; } } int binary_search(int * a, int size, int num) { int l = 0; int r = size-1; while(l <= r) { int mid = (l + r) / 2; if(num > a[mid-1] && num <= a[mid] ) return mid; else if(num < a[mid]) r = mid-1; else l = mid+1; } }
关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。
技术网站地址: vmfor.com