Wrong Answer too long 什么意思,我真的改崩溃了!谢谢大家了
CSP-S2021 回文代码如下:
#include<cstdio>
#include<cstring>
int num[1000000];
char s[1000000];
int main(){
int tot;
scanf("%d",&tot);
while(tot--){
int t;
scanf("%d",&t);
int sum=2*t;
for(int i=1;i<=sum;i++){
scanf("%d",&num[i]);
}
int nei;
for(int i=2;i<=sum;i++){
if(num[1]==num[i]){
nei=i;
break;
}
}
int wai_left=2;
int wai_right=sum;
int nei_left=nei-1;
int nei_right=nei+1;
int start=1,end=sum;
s[start]='L';
s[end]='L';
while(1){
if(start==end-1){
printf("%s\n",s+1);
break;
}
if(num[wai_left]==num[nei_left] && wai_left<nei_left){
s[++start]='L';
s[--end]='L';
wai_left++;
nei_left--;
}
else if(num[wai_left]==num[nei_right]){
s[++start]='L';
s[--end]='R';
wai_left++;
nei_right++;
}
else if(num[wai_right]==num[nei_left]){
s[++start]='R';
s[--end]='L';
wai_right--;
nei_left--;
}
else if(num[wai_right]==num[nei_right] && wai_right>nei_right){
s[++start]='R';
s[--end]='R';
wai_right--;
nei_right++;
}
else{
break;
}
}
if(start==end-1){
continue;
}
for(int i=1;i<sum;i++){
if(num[sum]==num[i]){
nei=i;
break;
}
}
wai_left=1;
wai_right=sum-1;
nei_left=nei-1;
nei_right=nei+1;
start=1,end=sum;
s[start]='R';
s[end]='L';
while(1){
if(start==end-1){
printf("%s\n",s+1);
break;
}
if(num[wai_left]==num[nei_left] && wai_left<nei_left){
s[++start]='L';
s[--end]='L';
wai_left++;
nei_left--;
}
else if(num[wai_left]==num[nei_right]){
s[++start]='L';
s[--end]='R';
wai_left++;
nei_right++;
}
else if(num[wai_right]==num[nei_left]){
s[++start]='R';
s[--end]='L';
wai_right--;
nei_left--;
}
else if(num[wai_right]==num[nei_right] && wai_right>nei_right){
s[++start]='R';
s[--end]='R';
wai_right--;
nei_right++;
}
else{
putchar('-');
putchar('1');
putchar('\n');
break;
}
}
}
return 0;
}