제출 #608847

#제출 시각아이디문제언어결과실행 시간메모리
608847faruk괄호 문자열 (CEOI16_match)C++17
100 / 100
1546 ms2644 KiB
#include <bits/stdc++.h>
#define pii pair<int, int>
#define ll long long
#define ld long double

using namespace std;


int n; string s;
bool possible(stack<char> open, int idx) {
    for (int i = idx; i < n; i++) {
        if (!open.empty() && open.top() == s[i])
            open.pop();
        else
            open.push(s[i]);
    }
    return open.empty();
}

int gaming_calc(char c, int endd) {
    stack<char> open;
    for (int i = endd; i >= 0; i--) {
        if (open.empty() && s[i] == c)
            return i;
        
        if (!open.empty() && open.top() == s[i])
            open.pop();
        else
            open.push(s[i]);
        
        if (open.empty() && s[i] == c)
            return i;
    }
    return -1;
}

int gaming[100001][30];
void tle_machine() {
    string t = s;
    sort(t.begin(), t.end());
    for (int i = 0; i < n; i++) {
        char x;
        if (i == 0 || t[i] != t[i - 1])
            x = t[i];
        for (int j = n - 1; j >= 0; j--)
            gaming[j][x] = gaming_calc(x, j);
    }
}

string out;
void recur(int strt, int e) {
    if (strt >= e)
        return;
    int mid = gaming_calc(s[strt], e);
    out[strt] = '(', out[mid] = ')';
    recur(strt + 1, mid - 1);
    recur(mid + 1, e);
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    //freopen("match.in", "r", stdin);
    //freopen("match.out", "w", stdout);

    cin >> s;
    n = s.size();
    if (!possible(stack<char>(), 0)) {
        cout << "-1\n";
        return 0;
    }

    out = s;
    recur(0, n - 1);

    cout << out << "\n";

    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

match.cpp: In function 'void tle_machine()':
match.cpp:46:23: warning: array subscript has type 'char' [-Wchar-subscripts]
   46 |             gaming[j][x] = gaming_calc(x, j);
      |                       ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...