답안 #1086554

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1086554 2024-09-11T03:19:26 Z juicy 괄호 문자열 (CEOI16_match) C++17
100 / 100
10 ms 12104 KB
#include <bits/stdc++.h>

using namespace std;

#ifdef LOCAL
#include "debug.h"
#else
#define debug(...) 42
#endif

const int N = 1e5, C = 26;

int n;
array<int, C> p[N];
string s, res;

void solve(int l, int r) {
  if (l > r) {
    return;
  }
  int c = s[l] - 'a';
  int m = p[r][c];
  if (m < l) {
    cout << -1;
    exit(0);
  } 
  res[l] = '(', res[m] = ')';
  solve(l + 1, m - 1);
  solve(m + 1, r);
}

int main() {
  ios::sync_with_stdio(false); cin.tie(nullptr);

  cin >> s;
  n = s.size();
  p[0].fill(-1);
  p[0][s[0] - 'a'] = 0;
  for (int i = 1; i < n; ++i) {
    for (int j = 0; j < C; ++j) {
      if (j == s[i] - 'a') {
        p[i][j] = i;
      } else if (p[i - 1][s[i] - 'a'] > 0) {
        p[i][j] = p[p[i - 1][s[i] - 'a'] - 1][j];
      } else {
        p[i][j] = -1;
      }
    }
  }
  res.resize(n);
  solve(0, n - 1);
  cout << res;
  return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 604 KB Output is correct
7 Correct 0 ms 604 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 604 KB Output is correct
7 Correct 0 ms 604 KB Output is correct
8 Correct 1 ms 1368 KB Output is correct
9 Correct 1 ms 1116 KB Output is correct
10 Correct 1 ms 1116 KB Output is correct
11 Correct 1 ms 1116 KB Output is correct
12 Correct 6 ms 7516 KB Output is correct
13 Correct 6 ms 8148 KB Output is correct
14 Correct 7 ms 8796 KB Output is correct
15 Correct 7 ms 10336 KB Output is correct
16 Correct 8 ms 10332 KB Output is correct
17 Correct 8 ms 10844 KB Output is correct
18 Correct 9 ms 10588 KB Output is correct
19 Correct 10 ms 11352 KB Output is correct
20 Correct 6 ms 7772 KB Output is correct
21 Correct 10 ms 12104 KB Output is correct