Submission #225352

#TimeUsernameProblemLanguageResultExecution timeMemory
225352brcodeMatch (CEOI16_match)C++14
100 / 100
39 ms13432 KiB
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6+5;
   string s;
   int dp[MAXN][30];
   char ans[MAXN];
void solve(int l,int r){
    if(l>r){
        return;
    }
    int mid = dp[r][s[l]-'a'];
    if(l>=mid){
        cout<<-1<<endl;
        exit(0);
    }
    ans[l] = '(';
    ans[mid] = ')';
    solve(l+1,mid-1);
    solve(mid+1,r);
}
int main() {
 
    cin>>s;
    int n = s.length();
    for(int i=0;i<n;i++){
        for(int j=0;j<26;j++){
            if(s[i]==j+'a'){
                dp[i][j] = i;
            }else if(i && dp[i-1][s[i]-'a']>0){
                dp[i][j] = dp[dp[i-1][s[i]-'a']-1][j];
            }
        }
    }
    solve(0,n-1);
    for(int i=0;i<n;i++){
        cout<<ans[i];
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...