Submission #36883

#TimeUsernameProblemLanguageResultExecution timeMemory
36883aome괄호 문자열 (CEOI16_match)C++14
37 / 100
6 ms2632 KiB
#include <bits/stdc++.h> using namespace std; // subtask 2 int n, cnt[2005]; char res[2005]; string s; void solve(int l, int r) { if (l > r) return; stack<char> st; for (int i = l + 1; i <= r; ++i) { cnt[i] = 0; if (!st.size()) { st.push(s[i]), cnt[i] += s[i] == s[l]; } else { if (st.top() == s[i]) st.pop(); else st.push(s[i]); } } while (st.size()) st.pop(); for (int i = r; i >= l + 1; --i) { if (!st.size()) { st.push(s[i]), cnt[i] += s[i] == s[l]; } else { if (st.top() == s[i]) st.pop(); else st.push(s[i]); } } int pos = 0; for (int i = l + 1; i <= r; ++i) { if (cnt[i] == 2) pos = i; } if (!pos) { cout << -1; exit(0); } res[l] = '(', res[pos] = ')'; solve(l + 1, pos - 1), solve(pos + 1, r); } int main() { ios::sync_with_stdio(false); cin >> s, n = s.size(); if (n > 2000) return 0; solve(0, n - 1); for (int i = 0; i < n; ++i) cout << res[i]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...