第一种感觉更优雅。
while(i<=n&&j<=n)
{
if(i==a[j])
{
i++;j++;
while(!s.empty()&&i==s.top())
{
s.pop();
i++;
}
}else
{
s.push(a[j++]);
if(s.size()>m)
{
cout<<"NO"<<endl;
return;
}
}
}
deque<int>q;
for(int i=1;i<=n;i++) cin>>b[i];
for(int i=1,j=1;i<=n;i++)
{
if(a[i]==b[j]) j++;
else
{
while(i<=n&&a[i]!=b[j]) q.push_back(a[i++]);
if(i>n)
{
cout<<"no"<<endl;
return;
}
j++;
}
while(q.size()&&(q.front()==b[j]||q.back()==b[j]))
{
if(q.front()==b[j]) q.pop_front();
else q.pop_back();
j++;
}
}
if(q.size()) cout<<"no"<<endl;
else cout<<"yes"<<endl;