제출 #1254637

#제출 시각아이디문제언어결과실행 시간메모리
1254637Alexe1900parentrises (BOI18_parentrises)C++20
50 / 100
65 ms7480 KiB
#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 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...