Submission #126409

#TimeUsernameProblemLanguageResultExecution timeMemory
126409johuthaMatch (CEOI16_match)C++14
37 / 100
2069 ms1208 KiB
#include <vector>
#include <iostream>
#include <string>
#include <algorithm>

#define int int64_t

using namespace std;

struct brackseq
{
    string s;
    
    int n;

    bool poss(int fr, vector<int> stack)
    {
        stack.push_back(fr);
        fr++;
        for (int i = fr; i < n; i++)
        {
            if (stack.size() == 0 || s[i] != s[stack.back()])
            {
                stack.push_back(i);
            }
            else
            {
                stack.pop_back();
            }
        }
        return stack.size() == 0;
    }

    string calc()
    {
        vector<int> stack;
        string seq;
        
        for (int i = 0; i < n; i++)
        {
            if (poss(i, stack))
            {
                seq.push_back('(');
                stack.push_back(i);
            }
            else
            {
                if (stack.size() == 0) return "-1";
                seq.push_back(')');
                stack.pop_back();
            }
        }
        if (stack.size() > 0) return "-1";
        return seq;
    }
};

signed main()
{
    brackseq bs;
    cin >> bs.s;
    bs.n = bs.s.size();
    cout << bs.calc();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...