#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int vis[N];
int a[N];
int b[N];
int ans[N];
int main()
{
int n,p,q;
cin>>n>>p>>q;
for(int i = 1; i <= p;i ++)
scanf("%d",&a[i]);
for(int i = 1; i <= q;i ++)
scanf("%d",&b[i]);
int i=1, j=1;
queue<int> res1,res2;//队列
while(i <=p || j <= q)
{
if(i <= p)
{
if(vis[ a[i] ] == 0) {
res1.push(a[i]);//插入队列
}
}
if(j <= q){
if(vis[ b[j] ] == 0){
res2.push(b[j]);
}
}
vis[ a[i] ] = 1;
vis[ b[j] ] = 1;
while( res1.size() < res2.size() && i <= p)
{
i++;
if(vis[ a[i] ] == 0) {
res1.push(a[i]);//把ai插入队列
vis[ a[i] ] = 1;
}
}
while( res1.size() > res2.size() && j <= q)
{
j++;
if(vis[ b[j] ] == 0){
res2.push(b[j]);
vis[ b[j] ] = 1;
}
}
i++;
j++;
}
int t = 1;
while(!res1.empty() || !res2.empty())
{
if(!res1.empty())//队列为空的话empty返回1
{
int p1 = res1.front();
res1.pop();//弹出头元素
ans[p1] = t;
}
if(!res2.empty())
{
int p2 = res2.front();//获取头元素
res2.pop();
ans[p2] = t;
}
t++;
}
for(int i = 1; i <= n; i ++)
printf("%d ",ans[i]);
}
2021-10-14
最新推荐文章于 2024-09-02 15:03:24 发布