有大佬看看这模拟有什么问题吗?
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int n,t,a[maxn],b[maxn],sum1,sum2,sum3,k,m;
int main(){
scanf("%d",&t);
while(t--){
sum1=sum2=sum3=k=0;
scanf("%d",&m);
n=m<<1;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=n;i++){
scanf("%d",&b[i]);
if((a[i]==1&&b[i]==2)||(a[i]==2&&b[i]==3)||(a[i]==3&&a[i]==1))
sum1++;
else if(a[i]==b[i])
sum2++;
else
sum3++;
}
for(int i=1;i<=n;i++){
if(sum1==n)
break;
if(k>=n)
continue;
else{
if(!(a[i]==1&&b[i]==2)||(a[i]==2&&b[i]==3)||(a[i]==3&&a[i]==1)){
if(a[i]==b[i]){
if(sum3>=n)
continue;
else if(k>=m){
b[i]=a[i]+1;
if(b[i]==4)
b[i]=1;
sum1++;
} else{
a[i]=b[i]-1;
if(a[i]==0)
a[i]=3;
sum1++;
}
} else{
if(k>=m){
b[i]=a[i]+1;
if(b[i]==4)
b[i]=1;
sum1++;
} else{
a[i]=b[i]-1;
if(a[i]==0)
a[i]=3;
sum1++;
}
}
k++;
}
}
}
printf("%lld\n",sum1);
for(int i=1;i<=n;i++)
printf("%lld ",a[i]);
puts("");
for(int i=1;i<=n;i++)
printf("%lld ",b[i]);
puts("");
}
return 0;
}