为啥第一个样例也会错, 我在本地输出和样例结果一样,wa信息显示too short one line 5
#include <bits/stdc++.h>
using i64 = long long;
// void out(std::deque<int> q1) {
// for (auto &x: q1) {
// std::cout << x << " ";
// }
// puts("");
// }
int judge(std::deque<int> &q1, std::deque<int> &q2) {
if (!q1.size()) return 0;
if (q1.front() == q1.back() && q1.size() != 1) return 1;
if (!q2.size()) return 0;
if (q1.front() == q2.back()) return 2;
}
std::string solve2(std::deque<int> &q1, std::deque<int> &q2) {
std::string s1, s2;
while (q1.size() || q2.size()) {
// out(q1), out(q2);
int st1 = judge(q1, q2), st2 = judge(q2, q1);
if (st1) {
if (st1 == 1) q1.pop_back(), s2 = "L" + s2;
else q2.pop_back(), s2 = "R" + s2;
q1.pop_front();
s1.push_back('L');
} else if (st2) {
if (st2 == 1) q2.pop_back(), s2 = "R" + s2;
else q1.pop_back(), s2 = "L" + s2;
q2.pop_front();
s1.push_back('R');
} else {
return "-1";
}
}
return s1 + s2;
}
void solve() {
int n;
std::cin >> n;
std::string ans1, ans2;
std::vector<int> vec(2 * n);
for (auto &x: vec) std::cin >> x;
int pos1 = std::find(vec.begin() + 1, vec.end(), vec[0]) - vec.begin();
int pos2 = std::find(vec.begin(), vec.end() - 1, vec[2 * n - 1]) - vec.begin();
std::deque<int> q1, q2;
for (int i = 1; i < pos1; i ++) q1.push_back(vec[i]);
for (int i = 2 * n - 1; i > pos1; i --) q2.push_back(vec[i]);
std::string t1, t2;
t1 = solve2(q1, q2);
if (t1 == "-1") std::string(2 * n, 'Z');
else ans1 = "L" + t1 + "L";
q1.clear(), q2.clear();
for (int i = 0; i < pos2; i ++) q1.push_back(vec[i]);
for (int i = 2 * n - 2; i > pos2; i --) q2.push_back(vec[i]);
t2 = solve2(q1, q2);
if (t2 == "-1") ans2 = std::string(2 * n, 'Z');
else ans2 = "R" + t2 + "L";
if (t1 == "-1" && t2 == "-1") std::cout << -1 << "\n";
else {
std::cout << std::min(ans1, ans2) << "\n";
}
// puts("");
}
int main() {
int _;
std::cin >> _;
while (_ --) { solve(); }
}