Submission #129415

# Submission time Handle Problem Language Result Execution time Memory
129415 2019-07-12T08:14:10 Z PeppaPig Match (CEOI16_match) C++14
37 / 100
2000 ms 97640 KB
#include <bits/stdc++.h>

using namespace std;

const int N = 1e5+5;

int n, col[N];
char S[N], ans[N];
stack<int> st;
map<stack<int>, int> M;
vector<int> v[N];

void solve(int l, int r) {
    if(l > r) return;
    vector<int> &now = v[col[l]];
    auto it = --upper_bound(now.begin(), now.end(), r);
    ans[l] = '(', ans[*it] = ')';
    solve(l + 1, *it - 1), solve(*it + 1, r);
}

int main() {
    scanf("%s", S + 1);
    n = strlen(S + 1);
    int ptr = 0;
    for(int i = 1; i <= n; i++) {
        int c = S[i] - 'a', id;
        if(st.empty() || st.top() != c) {
            st.emplace(c);
            if(!M.count(st)) M[st] = ++ptr;
            id = M[st];
        } else {
            id = M[st];
            st.pop();
        }
        col[i] = id;
        v[id].emplace_back(i);
    }
    if(st.size()) return !printf("-1\n");
    solve(1, n);
    printf("%s\n", ans + 1);

    return 0;
}

Compilation message

match.cpp: In function 'int main()':
match.cpp:22:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%s", S + 1);
     ~~~~~^~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 4 ms 2684 KB Output is correct
2 Correct 4 ms 2680 KB Output is correct
3 Correct 4 ms 2728 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 2684 KB Output is correct
2 Correct 4 ms 2680 KB Output is correct
3 Correct 4 ms 2728 KB Output is correct
4 Correct 6 ms 2936 KB Output is correct
5 Correct 6 ms 3064 KB Output is correct
6 Correct 5 ms 2808 KB Output is correct
7 Correct 9 ms 2936 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 2684 KB Output is correct
2 Correct 4 ms 2680 KB Output is correct
3 Correct 4 ms 2728 KB Output is correct
4 Correct 6 ms 2936 KB Output is correct
5 Correct 6 ms 3064 KB Output is correct
6 Correct 5 ms 2808 KB Output is correct
7 Correct 9 ms 2936 KB Output is correct
8 Correct 16 ms 4216 KB Output is correct
9 Correct 146 ms 9000 KB Output is correct
10 Correct 170 ms 11432 KB Output is correct
11 Correct 369 ms 19336 KB Output is correct
12 Execution timed out 2064 ms 97640 KB Time limit exceeded
13 Halted 0 ms 0 KB -