#include <bits/stdc++.h>
using namespace std;
#define int long long
using vi = vector<int>;
using vvi = vector<vi>;
signed main() {
int p; cin >> p;
int t; cin >> t;
while (t--) {
if (p == 1) {
string brackets; cin >> brackets;
queue<int> q;
string colors; colors.resize(brackets.length(), '?');
int cnt = 0;
int possible = 1;
for (int i = 0; i < brackets.length(); i++) {
if (brackets[i] == '(') {
q.push(i);
cnt++;
} else {
if (cnt == 0) {
if (q.empty()) {
possible = 0;
break;
}
int a = q.front();
q.pop();
colors[a] = 'G';
} else cnt--;
}
}
if (!possible) {
cout << "impossible\n";
continue;
}
for (int i = brackets.length()-1; i >= 0; i--) {
if (brackets[i] == ')' and cnt) {
cnt--;
colors[i] = 'G';
}
}
if (cnt > 0) {
cout << "impossible\n";
continue;
}
int sr = 0, sb = 0;
for (int i = 0; i < brackets.length(); i++) {
if (brackets[i] == '(') {
if (colors[i] != 'G') {
cnt++;
if (cnt % 2 == 0) colors[i] = 'R';
else colors[i] = 'B';
}
if (colors[i] != 'R') sb++;
if (colors[i] != 'B') sr++;
} else {
if (colors[i] != 'G') {
if (cnt % 2 == 0) colors[i] = 'R';
else colors[i] = 'B';
cnt--;
}
if (colors[i] != 'R') sb--;
if (colors[i] != 'B') sr--;
}
if (sb < 0 or sr < 0) {
possible = 0;
break;
}
}
if (!possible) {
cout << "impossible\n";
continue;
}
if (sb == 0 and sr == 0) cout << colors << "\n";
else cout << "impossible\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... |