可能复制是出问题了,或可能思路就有问题。
#include<bits/stdc++.h>
#define il inline
#define re register
using namespace std;
const int N=2e5+10;
int T,n,p,q;
char a[N],b[N],c[N];
int main() {
cin>>T;
while(T--) {
cin>>n>>(a+1)>>(b+1)>>(c+1);
p=1,q=1;
for(re int i=1;i<=n*2;i++) {
if(b[p]==a[i]) p++;
if(c[q]==a[i]) q++;
}
if(n*4-p+1<=3*n) {
for(re int i=1;i<=n*2;i++) putchar(a[i]);
for(re int i=p;i<=n*2;i++) putchar(b[i]);
putchar('\n');
continue;
}
if(n*4-q+1<=3*n) {
for(re int i=1;i<=n*2;i++) putchar(a[i]);
for(re int i=q;i<=n*2;i++) putchar(c[i]);
putchar('\n');
continue;
}
p=1,q=1;
for(re int i=1;i<=n*2;i++) {
if(a[p]==b[i]) p++;
if(c[q]==b[i]) q++;
}
if(n*4-p+1<=3*n) {
for(re int i=1;i<=n*2;i++) putchar(b[i]);
for(re int i=p;i<=n*2;i++) putchar(a[i]);
putchar('\n');
continue;
}
if(n*4-q+1<=3*n) {
for(re int i=1;i<=n*2;i++) putchar(b[i]);
for(re int i=q;i<=n*2;i++) putchar(c[i]);
putchar('\n');
continue;
}
p=1,q=1;
for(re int i=1;i<=n*2;i++) {
if(a[p]==c[i]) p++;
if(b[q]==c[i]) q++;
}
if(n*4-p+1<=3*n) {
for(re int i=1;i<=n*2;i++) putchar(c[i]);
for(re int i=p;i<=n*2;i++) putchar(a[i]);
putchar('\n');
continue;
}
for(re int i=1;i<=n*2;i++) putchar(c[i]);
for(re int i=q;i<=n*2;i++) putchar(b[i]);
putchar('\n');
continue;
}
return 0;
}