#include <bits/stdc++.h>
using namespace std;
bool RBS(string s){
int o = 0;
for (char c : s){
if (c == ')') o--;
else o++;
if (o < 0) return 0;
}
return (o == 0);
}
bool check(string &s, string &ans){
string a, b;
for (int i = 0; i < s.size(); i ++){
if (ans[i] == 'G'){
a += s[i];
b += s[i];
}
else if (ans[i] == 'B')
b += s[i];
else
a += s[i];
}
return (RBS(a) and RBS(b));
}
string get(string &s){
string ans;
int n = s.size();
vector<int> vec;
queue<int> q;
for (int i = 0; i < n; i ++){
ans += 'G';
char c = s[i];
if (c == '(')
vec.push_back(i);
else{
if (vec.empty()){
if (q.empty()) continue;
int f = q.front();
q.pop();
ans[f] = 'R';
ans[i] = 'B';
}
else{
vec.pop_back();
q.push(i);
}
}
}
while (!q.empty()) q.pop();
for (int i = n - 1; i >= 0; i --){
if (vec.empty()) break;
if (s[i] == ')') continue;
int l = vec.back();
if (l < i) q.push(i);
else{
vec.pop_back();
if (q.empty()) continue;
int f = q.front();
q.pop();
ans[f] = 'R';
ans[i] = 'B';
}
}
if (!check(s, ans))
ans = "impossible";
return ans;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int t;
cin >> t >> t;
while (t--){
string s;
cin >> s;
cout << get(s) << '\n';
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |