分析:
用
a
i
a_i
ai 表示到第
i
i
i 层能通过的宽度 即最窄宽度
每个盘子和这些宽度比较 如果刚好大于就可以落进 然后将这层
p
o
p
pop
pop
CODE:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stack>
#define reg register
using namespace std;
typedef long long ll;
const int N=5e4+5;
int n,m,a[N],ans;
stack<int> st;
int main()
{
scanf("%d%d",&n,&m);
memset(a,0x3f,sizeof a);
for(int i=1,x;i<=n;i++)
{
scanf("%d",&x);
a[i]=min(a[i-1],x);
st.push(i);
}
for(int i=1,x;i<=m;i++)
{
scanf("%d",&x);
while(!st.empty()&&x>a[st.top()]) st.pop();
if(!st.empty()) ans++,st.pop();
}
printf("%d",ans);
return 0;
}