对于标准库的二分函数的疑问
查看原帖
对于标准库的二分函数的疑问
1344756
ROU_bing楼主2025/6/29 22:01

我的 AC 代码:

#include <bits/stdc++.h>

using namespace std;

int a;
int p[100002]={INT_MAX},num1;
int low[100002],num2;

bool cmp(int a,int x){return a>=x;}

int main(){
    while(cin>>a){
        if(a<=p[num1])   p[++num1]=a;
        else    p[lower_bound(p+1,p+num1+1,a,cmp)-p]=a;
        if(a>low[num2]) low[++num2]=a;
        else    low[lower_bound(low+1,low+num2+1,a)-low]=a;
    }
    printf("%d\n%d",num1,num2);
    return 0;
}

但是如果我将 14 行代码改为

else    p[upper_bound(p+1,p+num1+1,a,cmp)-p]=a;

只是换了一下函数,但是自定义比较器没变,则无法 AC

为什么???

2025/6/29 22:01
加载中...