Submission #466148

#TimeUsernameProblemLanguageResultExecution timeMemory
466148fuad27Match (CEOI16_match)C++17
10 / 100
240 ms524292 KiB
#include<bits/stdc++.h> using namespace std; #define MAXN 200000 string s; int n, op[MAXN][26]; char ans[MAXN]; string solve(int l, int r) { if (l > r) return ""; return '(' + solve(l + 1, op[r][s[l] - 97] - 1) + ')' + solve(op[r][s[l] - 97] + 1, r); } int main () {/* freopen("match.in", "r", stdin); freopen("match.out", "w", stdout);*/ cin >> s; n=s.size(); stack<int> st; for(int i = 0;i<n;i++) { if(st.size() and s[i]==st.top())st.pop(); else st.push(s[i]); for(int j = 0;j<26;j++) { if(j == s[i]-97)op[i][j] = i; else if(i > 0 && op[i][s[i]-97])op[i][j] = op[op[i-1][s[i]-97]-1][j]; else op[i][j] = -1; } } if(st.size())cout<< -1; else { cout<<solve(0, n-1)<<endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...