CSP-S 2021 回文
using namespace std;
int a[100100];
int q1[100100],q2[100100];
int f1,p1,f2,p2;
char ord[100100];
int or1,or2;
int pd;
bool check(){
while(f1<=p1||f2<=p2){
for(int i=f1;i<=p1;i++){
cout<<q1[i]<<' ';
}
cout<<endl;
for(int i=f2;i<=p2;i++){
cout<<q2[i]<<' ';
}
cout<<endl;
pd=0;
if(f1==p1&&f2==p2){
if(q1[p1]!=q2[p2]){
return 0;
}
ord[++or1]='L';
ord[--or2]='R';
f1++;
p2--;
}
else if(q1[f1]==q1[p1]){
ord[++or1]='L';
ord[--or2]='L';
f1++;
p1--;
}
else if(q1[f1]==q2[p2]){
ord[++or1]='L';
ord[--or2]='R';
f1++;
p2--;
}
else if(q2[f2]==q1[p1]){
ord[++or1]='R';
ord[--or2]='L';
f2++;
p1--;
}
else if(q2[f2]==q2[p2]){
ord[++or1]='R';
ord[--or2]='R';
f2++;
p2--;
}
else {
return 0;
}
}
return 1;
}
int main(){
int t;
freopen("1.txt","w",stdout);
cin>>t;
while(t--){
for(int i=f1;i<=p1;i++){
cout<<q1[i]<<' ';
//q1[i]=0;
//这里赋0就炸了
}
cout<<endl;
for(int i=f2;i<=p2;i++){
cout<<q2[i]<<' ';
//q2[i]=0;
//同
}
cout<<endl;
f1=p1=f2=p2=0;
int n;
cin>>n;
n*=2;
ord[1]=ord[n]='L';
or1=1;or2=n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int mid=0;
for(int i=2;i<=n;i++){
if(a[i]==a[1]){
mid=i;
break;
}
}
for(int i=2;i<mid;i++){
q1[++p1]=a[i];
}
for(int i=n;i>mid;i--){
q2[++p2]=a[i];
}
f1=f2=1;
if(check()){
for(int i=1;i<=n;i++){
cout<<ord[i];
}
cout<<endl;
}
else {
f1=f2=1;
or1=1;or2=n;
p1=p2=0;
ord[1]='R';
ord[n]='L';
for(int i=2;i<mid;i++){
q2[++p2]=a[i];
}
for(int i=n;i>mid;i--){
q1[++p1]=a[i];
}
if(check()){
for(int i=1;i<=n;i++){
cout<<ord[i];
}
cout<<endl;
}
else {
cout<<-1<<endl;
}
}
}
}