Submission #255160

#TimeUsernameProblemLanguageResultExecution timeMemory
255160amoo_safarparentrises (BOI18_parentrises)C++14
50 / 100
69 ms12552 KiB
// Zende bad Shoma nasime faghat ! #include <bits/stdc++.h> #define pb push_back #define F first #define S second #define all(x) x.begin(), x.end() #define debug(x) cerr << #x << " : " << x << '\n' using namespace std; typedef long long ll; typedef long double ld; typedef string str; typedef pair<ll, ll> pll; const ll Mod = 1000000007LL; const int N = 2e5 + 10; const ll Inf = 2242545357980376863LL; const ll Log = 30; str Solve1(){ vector<int> O, C; int sm = 0; str s; cin >> s; int n = s.size(); vector<int> mk(n, 0); for(int i = 0; i < n; i++){ if(s[i] == '('){ O.pb(i); sm ++; } else { C.pb(i); sm --; } } reverse(all(C)); str Im = "impossible"; int Ao = (sm <= 0 ? -sm: 0); int Ac = (sm >= 0 ? sm: 0); int idx = -1; for(int i = 0; i < n; i++){ if(Ao + i > O.size()) break; if(Ac + i > C.size()) break; int po = (Ao + i == 0 ? -1 : O[Ao + i - 1]); int pc = (Ac + i == 0 ? n : C[Ac + i - 1]); if(po >= pc) break; idx = i; } //debug(idx); if(idx == -1) return Im; for(int i = 0; i < Ao + idx; i++) mk[O[i]] = 1; for(int i = 0; i < Ac + idx; i++) mk[C[i]] = 1; str res = ""; int Sr = 0, Sb = 0; for(int i = 0; i < n; i++){ if(mk[i]){ res += "G"; if(s[i] == '('){ Sr ++; Sb ++; } else { Sr --; Sb --; } } else { if(s[i] == '('){ if(Sr < Sb) Sr ++, res += "R"; else Sb ++, res += "B"; } else { if(Sr > Sb) Sr --, res += "R"; else Sb --, res += "B"; } } if(min(Sr, Sb) < 0) return Im; } assert(Sr == 0); assert(Sb == 0); return res; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int PR; cin >> PR; assert(PR == 1); int T; cin >> T; while(T --){ cout << Solve1() << '\n'; } return 0; }

Compilation message (stderr)

parentrises.cpp: In function 'str Solve1()':
parentrises.cpp:47:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(Ao + i > O.size()) break;
      ~~~~~~~^~~~~~~~~~
parentrises.cpp:48:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(Ac + i > C.size()) break;
      ~~~~~~~^~~~~~~~~~
#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...