AcWing 5069. 一端进,两端出
原题链接
简单
作者:
最后五分钟
,
2024-11-16 22:15:24
,
所有人可见
,
阅读 3
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
int a[N],q[N],b[N];
unordered_map<int,int> st;
queue<int> s;
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=k;i++)
{
int ok=1;
int hh=0,tt=-1;
while(s.size())s.pop();
st.clear();
for(int j=1;j<=n;j++)cin>>b[j];
for(int j=1;j<=n;j++)s.push(a[j]);
for(int j=1;j<=n;j++)
{
int x=b[j];
while(!st[x])
{
q[++tt]=s.front();
s.pop();
st[q[tt]]=1;
}
int sok=0;
if(tt>=hh)
{
if(q[hh]==x)hh++,sok=1;
else if(q[tt]==x)tt--,sok=1;
}
if(!sok)
{
ok=0;
break;
}
}
if(ok)cout<<"yes"<<endl;
else cout<<"no"<<endl;
}
return 0;
}