답안 #129415

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
129415 2019-07-12T08:14:10 Z PeppaPig 괄호 문자열 (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);
     ~~~~~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 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
# 결과 실행 시간 메모리 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
# 결과 실행 시간 메모리 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 -