为啥我这个二分查找答案不对,一直用的这个模板,换成题解的模板就对了
查看原帖
为啥我这个二分查找答案不对,一直用的这个模板,换成题解的模板就对了
995390
codePanclA楼主2023/7/10 15:12
#include <math.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
const int N=1000000;
int a[N];
int n;
int g[N];
int mmax=-1;
int cnt,x;
int main(int argc, char** argv) {
	while (cin >> x) a[++n] = x;
    g[0] = 2e9; 
    for (int i = 1; i <= n; i++) {
        if (a[i] <= g[cnt]) g[++cnt] = a[i];
        else {
            int l = 0, r = cnt+1;
            while (l+1 < r) {
                int mid = l + r >> 1;
                if (g[mid] < a[i]) r = mid;
                else l = mid ;
            }
            g[l] = a[i];
        }
    }
    cout << cnt << endl;  
	return 0;
}
2023/7/10 15:12
加载中...