제출 #476707

#제출 시각아이디문제언어결과실행 시간메모리
476707wiktoria_bazan괄호 문자열 (CEOI16_match)C++14
0 / 100
1 ms204 KiB
#include <iostream> #include <stack> #include <algorithm> #include <string> #include <vector> using namespace std; int n; string s; stack <char> S; string generuj(string w, int in) { int sum = 0; for (int i = 0; i < in; i++) { if (w[i] == '(') { sum++; S.push(s[i]); } else { sum--; S.pop(); } } w[in] = '('; S.push(s[in]); sum++; for (int i = in + 1; i < n; i++) { if (S.empty()) { sum++; w.insert(i, "("); S.push(s[i]); } else { char v = S.top(); if (v == s[i]) { sum--; S.pop(); w[i] = ')'; } else { sum++; w[i] = '('; S.push(s[i]); } } } while (!S.empty()) S.pop(); if (sum != 0) { return "))))))))))))))))))"; } else return w; } void task() { int sum = 0; string w = ""; for (int i = 0; i < n; i++) { if (S.empty()) { sum++; w.insert(w.size(), "("); S.push(s[i]); } else { char v = S.top(); if (v == s[i]) { sum--; S.pop(); w.insert(w.size(), ")"); } else { sum++; w.insert(w.size(), "("); S.push(s[i]); } } } if (sum != 0) { cout << -1; return; } for (int i = 1; i < n; i++) { if (w[i] == ')') { w = min( w, generuj(w, i)); } } cout << w; return; } int main() { cin >> s; n = s.size(); task(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...