【分析】如果第i个井宽大于第i-1个,那么大于的那部分是完全没用的。就可以减掉那部分,于是井就变成了一个从上到下非递增的,两个指针O(n)就可以解决了
#include<iostream>
using namespace std;
int a[101000];
int b[101000];
int main(){
int n, m, ans = 0;
cin >> n >> m;
for(int i = 1; i <= n; i++) {
cin >> a[i];
if(i > 1 && a[i] > a[i - 1]) a[i] = a[i - 1];
}
for(int i = 1; i <= m; i++){
cin >> b[i];
}
for(int i = n, j = 1; i >= 1; i--){
while(a[i] < b[j] && i >= 1) i--;
if(a[i] >= b[j])ans++;
j++;
}
cout << ans << endl;
return 0;
}