我的 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 。
为什么???