Submission #608096

#TimeUsernameProblemLanguageResultExecution timeMemory
608096SeDunion괄호 문자열 (CEOI16_match)C++17
37 / 100
425 ms34312 KiB
#include<iostream> #include<vector> #include<string> using namespace std; int n; string s, ans; const int N = 2022; int dp[N][N]; int us[N][N]; int solve(int l, int r) { if (l > r) return 1; if (us[l][r]) return dp[l][r]; us[l][r] = 1; for (int i = r ; i > l ; i -= 2) { if (s[i] == s[l] && solve(l+1, i-1) && solve(i + 1, r)) { return dp[l][r] = 1; } } return dp[l][r]; } void get(int l, int r) { if (l > r) return; for (int i = r ; i > l ; i -= 2) { if (s[i] == s[l] && solve(l+1, i-1) && solve(i + 1, r)) { ans[l] = '('; ans[i] = ')'; get(l + 1, i - 1); get(i + 1, r); return; } } } int main() { ios_base::sync_with_stdio(0); cin >> s; n = s.size(); if (!solve(0, n-1)) { cout << -1; return 0; } ans = string(n, '-'); get(0, n - 1); cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...