Submission #1117599

#TimeUsernameProblemLanguageResultExecution timeMemory
1117599vjudge1Match (CEOI16_match)C++17
0 / 100
1 ms592 KiB
#include <bits/stdc++.h> using namespace std; bool isValid(const string &str) { stack<char> s; // cout << endl; for (const char &c : str) { if (c == '(') { s.push(c); // cout << "Pushed " << c << '\n'; } else { if (s.top() == '(') { s.pop(); // cout << "Popped (\n"; } else { // cout << c << " doesn't match )\n"; return false; } } } if (!s.empty()) { // cout << s.top() << "is left. " << '\n'; } return s.empty(); } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); string s; vector<pair<size_t, size_t>> m; cin >> s; while (true) { size_t p1 = s.find_first_of('a'); size_t p2 = s.find_last_of('a'); m.push_back({p1, p2}); if (p1 == p2) { break; } s[p1] = '('; s[p2] = ')'; } while (true) { size_t p1 = s.find_first_of('b'); size_t p2 = s.find_last_of('b'); m.push_back({p1, p2}); if (p1 == p2) { break; } s[p1] = '('; s[p2] = ')'; } if (!isValid(s)) { cout << "-1\n"; return 0; } for (const auto &[x, y] : m) { if (x != y - 1 and !isValid(s.substr(x + 1, y - x - 1))) { // cout << s.substr(x + 1, y - x - 1) << " is invalid.\n"; cout << "-1\n"; return 0; } } cout << s << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...