Submission #381065

#TimeUsernameProblemLanguageResultExecution timeMemory
381065VodkaInTheJarparentrises (BOI18_parentrises)C++14
50 / 100
64 ms12156 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O3") #define endl '\n' using namespace std; const int mod = 1e9 + 7; int add(int a, int b) { a += b; if (a >= mod) a -= mod; return a; } int p, t; void read() { cin >> p >> t; } void solve() { while (t--) { if (p == 1) { string s; cin >> s; int n = (int)s.size(); vector <int> color(n, 0); stack <int> st; for (int i = 0; i < n; i++) { if (s[i] == '(') st.push(i); else { if (!st.empty()) { color[st.top()] += 1; color[i] += 1; st.pop(); } } } while (!st.empty()) st.pop(); vector <int> to_add, to_sub; for (int i = 0; i < n; i++) if (color[i]) { if (s[i] == '(') to_add.push_back(i); else to_sub.push_back(i); } reverse(to_sub.begin(), to_sub.end()); int balance = 0, min_bb = 0; for (int i = 0; i < n; i++) if (!color[i]) { if (s[i] == '(') balance++; else balance--; min_bb = min(min_bb, balance); } bool can = false; for (int i = -min_bb; i <= min((int)to_add.size(), -min_bb); i++) { int curr_balance = balance + i; if (curr_balance < 0) continue; if (curr_balance > (int)to_sub.size()) continue; vector <bool> is(n, false); for (int j = 0; j < i; j++) is[to_add[j]] = true; for (int j = 0; j < curr_balance; j++) is[to_sub[j]] = true; int bb = 0; bool curr_can = true; for (int j = 0; j < n; j++) { if (!color[j] || is[j]) { if (s[j] == '(') bb++; else bb--; } if (bb < 0) { curr_can = false; break; } } if (curr_can) { for (int j = 0; j < n; j++) if (!color[j] || is[j]) color[j] += 2; can = true; break; } } if (!can) cout << "impossible" << endl; else { for (int i = 0; i < n; i++) { if (color[i] == 3) cout << "G"; else if (color[i] == 1) cout << "B"; else cout << "R"; } cout << endl; } } } } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); read(); solve(); }
#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...