답안 #940177

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
940177 2024-03-07T06:25:06 Z thinknoexit 괄호 문자열 (CEOI16_match) C++17
0 / 100
1 ms 348 KB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int a[100100];
vector<int> pos[26];
int main() {
    cin.tie(nullptr)->sync_with_stdio(false);
    string s;
    cin >> s;
    int n = s.size();
    for (int i = 0;i < n;i++) {
        pos[s[i] - 'a'].push_back(i);
    }
    for (int i = 0;i < 26;i++) {
        int m = pos[i].size();
        if (m & 1) {
            cout << -1;
            return 0;
        }
        for (int j = 0;j < m / 2;j++) {
            a[pos[i][j]] = -1;
        }
        for (int j = m / 2;j < m;j++) {
            a[pos[i][j]] = 1;
        }
    }
    stack<char> st;
    for (int i = 0;i < n;i++) {
        if (a[i] == -1) {
            st.push(s[i]);
        }
        else {
            if (st.empty()) {
                cout << -1;
                return 0;
            }
            if (st.top() != s[i]) {
                cout << -1;
                return 0;
            }
            st.pop();
        }
    }
    for (int i = 0;i < n;i++) {
        cout << "()"[a[i] == 1];
    }
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Incorrect 0 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Incorrect 0 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Incorrect 0 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -