目录
显示
题目链接
https://www.luogu.com.cn/problem/P3434
题解
只需扫描两次即可解决问题。
第一次维护前缀最小值,第二次用一个指针维护当前所在位置,每个圆盘下落时,将指针向前移动,直到前缀最小值不小于当前盘直径即可。
#include <iostream>
#include <algorithm>
using namespace std;
int r[300005],a[300005];
int main()
{
int n,m;
cin>>n>>m;
a[0]=2e9;
for(int i=1;i<=n;i++)
{
cin>>r[i];
a[i]=min(a[i-1],r[i]);
}
int cur=n;
for(int i=1;i<=m;i++)
{
int k;
cin>>k;
while(a[cur]<k)
cur--;
if(cur&&i!=m)cur--;
}
cout<<cur<<endl;
return 0;
}