Submission #647038

#TimeUsernameProblemLanguageResultExecution timeMemory
647038georgievskiyparentrises (BOI18_parentrises)C++17
72 / 100
24 ms4512 KiB
#include <bits/stdc++.h> using namespace std; bool check(string s, string a) { int b0 = 0, b1 = 0; for (int i = 0; i < s.size(); i++) { if (a[i] != 'B') b0 += (s[i] == '(') ? +1 : -1; if (a[i] != 'R') b1 += (s[i] == '(') ? +1 : -1; if (b0 < 0 || b1 < 0) return 0; } return b0 == 0 && b1 == 0; } void solve1() { string s; cin >> s; int n = s.size(); string a(n, 'G'); int b0 = 0, b1 = 0; for (int i = 0; i < n; i++) { if (s[i] == '(') { a[i] = 'G'; b0++, b1++; } else { if (b0 >= b1) { a[i] = 'R'; b0--; } else { a[i] = 'B'; b1--; } } if (b0 < 0 || b1 < 0) { cout << "impossible\n"; return; } } for (int i = n - 1; i >= 0 && (b0 > 0 || b1 > 0); i--) { if (s[i] == '(') { if (b0 >= b1) a[i] = 'B', b0--; else a[i] = 'R', b1--; } else { if (b0 > 0 && a[i] == 'B') a[i] = 'G', b0--; else if (b1 > 0 && a[i] == 'R') a[i] = 'G', b1--; } assert(b0 >= 0 && b1 >= 0); } if (check(s, a)) cout << a << "\n"; else cout << "impossible\n"; } void solve2() { vector<int> a({0, 0, 1, 2, 2, 6, 12, 18, 43, 86, 148, 326, 652, 1194, 2531, 5062, 9578, 19884, 39768, 76680, 157236, 314472, 613440, 1248198, 2496396, 4906266, 9932707, 19865414, 39237478, 79165646, 158331292}); int i; cin >> i; cout << a[i] << "\n"; } int main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); int p, t; cin >> p >> t; while (t--) { if (p == 1) solve1(); else solve2(); } return 0; }

Compilation message (stderr)

parentrises.cpp: In function 'bool check(std::string, std::string)':
parentrises.cpp:6:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    6 |  for (int i = 0; i < s.size(); i++) {
      |                  ~~^~~~~~~~~~
#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...