传送门
首先一个下面直径比上面大的管子是然并卵的。
我们大可以把他当作上面的小管子。
然后就可以二分答案了。
但是盘子是不可以穿透的。
所以还要考虑叠在之前盘子之上的情况。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 301000
using namespace std;
int n,m;
int a[N],b[N];
int sta[N],top;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=m;i++)
scanf("%d",&b[i]);
for(int i=2;i<=n;i++)
if(a[i]>a[i-1])a[i]=a[i-1];
int l,r,la=n+1;
for(int i=1;i<=m;i++)
{
l=1,r=la-1;
int ans=r;
while(l<=r)
{
int mid=(l+r)>>1;
if(a[mid]<b[i])ans=mid,r=mid-1;
else l=mid+1;
}
la=ans;
if(a[ans]<b[i])la--;
}
printf("%d\n",la);
}