Submission #1144400

#TimeUsernameProblemLanguageResultExecution timeMemory
1144400crafticatparentrises (BOI18_parentrises)C++20
11 / 100
1 ms328 KiB
#include <bits/stdc++.h>
using namespace std;

#define F0R(i,n) for(int i=0;i<n;i++)
#define FOR(i,a,b) for(int i=a;i<b;i++)
#define ROF(i,a,b) for(int i=b - 1;i>=a;i--)

template<typename T>
using V = vector<T>;
using vi = V<int>;
using pi = pair<int,int>;
const int INF=1e9+7;

void solveProblemA() {
    int t; cin >> t;
    while (t--) {
        string s; cin >> s;
        vi colors(s.size(), 0);
        stack<int> st;
        stack<int> removers, last;
        bool possible = true;

        F0R(i,s.size()) {
            char c = s[i];
            if (c == '(') {
                st.push(i);
                last.push(i);
            }
            else if (c == ')') {
                if (st.empty()) {
                    removers.push(i);
                    if (removers.size() < 2) {
                        possible = false;
                        break;
                    } else {
                        colors[removers.top()] = 1; removers.pop();
                        colors[removers.top()] = 2; removers.pop();
                    }
                } else {
                    st.pop();
                    removers.push(i);
                }
            }
        }
        while (!st.empty() and last.size() >= 2) {
            int i = last.top(); last.pop();
            int j = last.top(); last.pop();
            colors[i] = 1; colors[j] = 2; st.pop();
        }
        if (!st.empty()) possible = false;

        if (!possible) {
            cout << "impossible" << "\n";
            continue;
        }

        F0R(i, s.size()) {
            cout << (colors[i] == 0 ? "G" : colors[i] == 1 ? "B" : "R") << "";
        }
        cout << "\n";
    }
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(nullptr);

    int p; cin >> p;
    if (p == 1) {
        solveProblemA();
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...