不知道为啥,大样例中
20
17 3 16 1 9 12 19 6 8 2 20 14 18 10 5 11 15 7 13 4 4 13 7 15 11 5 10 18 17 14 20 2 8 6 19 12 9 1 16 3 过不了?
#include<bits/stdc++.h>
#include<deque>
using namespace std;
const int N=1000005;
int T,n,k,a[N];
deque<int> c,d;
bool ans[N];int len=0;
int main(){
//freopen("palin.in","r",stdin);
//freopen("palin.out","w",stdout);
scanf("%d",&T);
while(T--){
len=0;
c.erase(c.begin(),c.end());
d.erase(d.begin(),d.end());
scanf("%d%d",&n,&a[1]);
for(int i=2;i<=2*n;i++){
scanf("%d",&a[i]);
if(a[i]==a[1])k=i;
}
for(int i=2;i<k;i++){
c.push_back(a[i]);
}
for(int i=k+1;i<=2*n;i++){
d.push_front(a[i]);
}
ans[++len]=0;bool TorF=false;
while(!c.empty()&&!d.empty()){
TorF=true;
//cout<<c.front()<<" "<<c.back()<<" "<<d.front()<<" "<<d.back()<<endl;
if(c.front()==d.back()){
ans[++len]=0;
ans[2*n-len+1]=1;
c.pop_front();
d.pop_back();
}else if(c.back()==d.front()){
ans[++len]=1;
ans[2*n-len+1]=0;
c.pop_back();
d.pop_front();
}else if(c.front()==c.back()){
ans[++len]=0;
ans[2*n-len+1]=0;
c.pop_front(),c.pop_back();
}else if(d.front()==d.back()){
ans[++len]=1;
ans[2*n-len+1]=1;
d.pop_front(),d.pop_back();
}else{
TorF=false;
break;
}
}
if(TorF==false){
//cout<<"-----"<<endl;
len=0;
c.erase(c.begin(),c.end());
d.erase(d.begin(),d.end());
for(int i=1;i<=2*n-1;i++){
if(a[i]==a[2*n])k=i;
}
for(int i=1;i<k;i++){
c.push_back(a[i]);
}
for(int i=k+1;i<2*n;i++){
d.push_front(a[i]);
}
ans[++len]=1;
TorF=false;
while(!c.empty()||!d.empty()){
TorF=true;
//cout<<c.front()<<" "<<c.back()<<" "<<d.front()<<" "<<d.back()<<endl;
if(c.front()==d.back()){
ans[++len]=0;
ans[2*n-len+1]=1;
c.pop_front();
d.pop_back();
}else if(c.back()==d.front()){
ans[++len]=1;
ans[2*n-len+1]=0;
c.pop_back();
d.pop_front();
}else if(c.front()==c.back()&&c.size()!=1){
ans[++len]=0;
ans[2*n-len+1]=0;
c.pop_front(),c.pop_back();
}else if(d.front()==d.back()&&d.size()!=1){
ans[++len]=1;
ans[2*n-len+1]=1;
d.pop_front(),d.pop_back();
}else{
TorF=false;
break;
}
}
if(TorF==false){
printf("-1\n");
}else{
for(int i=1;i<=2*n-1;i++){
if(ans[i]==0)printf("L");
else printf("R");
}printf("L\n");
}
}else{
for(int i=1;i<=2*n-1;i++){
if(ans[i]==0)printf("L");
else printf("R");
}printf("L\n");
}
}
return 0;
}