# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
124705 | 2019-07-03T17:53:34 Z | eriksuenderhauf | 괄호 문자열 (CEOI16_match) | C++11 | 22 ms | 11384 KB |
//#pragma GCC optimize("O3") #include <bits/stdc++.h> using namespace std; const int MAXN = 1e5 + 5; char str[MAXN]; int a[MAXN], nx[MAXN][26]; void solve(int l, int r) { if (l > r) return; if (str[l] == str[r]) { a[r] = 1; solve(l+1, r-1); return; } int mx = nx[r][str[l]-'a']; a[mx] = 1; solve(l+1,mx-1); solve(mx+1,r); } int main() { scanf("%s", str+1); int n = strlen(str+1); if (n & 1) return !printf("-1\n"); stack<int> st; st.push(1); nx[1][str[1]-'a'] = 1; for (int i = 2; i <= n; i++) { if (!st.empty() && str[i] == str[st.top()]) st.pop(); else st.push(i); for (int j = 0; j < 26; j++) if (nx[i-1][str[i]-'a']) nx[i][j] = nx[nx[i-1][str[i]-'a']-1][j]; nx[i][str[i]-'a'] = i; } if (!st.empty()) return !printf("-1\n"); solve(1, n); for (int i = 1; i <= n; i++) if (a[i]) printf(")"); else printf("("); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 380 KB | Output is correct |
3 | Correct | 2 ms | 376 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 380 KB | Output is correct |
3 | Correct | 2 ms | 376 KB | Output is correct |
4 | Correct | 2 ms | 376 KB | Output is correct |
5 | Correct | 2 ms | 376 KB | Output is correct |
6 | Correct | 2 ms | 504 KB | Output is correct |
7 | Correct | 2 ms | 504 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 380 KB | Output is correct |
3 | Correct | 2 ms | 376 KB | Output is correct |
4 | Correct | 2 ms | 376 KB | Output is correct |
5 | Correct | 2 ms | 376 KB | Output is correct |
6 | Correct | 2 ms | 504 KB | Output is correct |
7 | Correct | 2 ms | 504 KB | Output is correct |
8 | Correct | 3 ms | 1016 KB | Output is correct |
9 | Correct | 3 ms | 1144 KB | Output is correct |
10 | Correct | 3 ms | 1116 KB | Output is correct |
11 | Correct | 4 ms | 1144 KB | Output is correct |
12 | Correct | 13 ms | 6904 KB | Output is correct |
13 | Correct | 15 ms | 7416 KB | Output is correct |
14 | Correct | 14 ms | 8056 KB | Output is correct |
15 | Correct | 16 ms | 8824 KB | Output is correct |
16 | Correct | 16 ms | 8824 KB | Output is correct |
17 | Correct | 17 ms | 9464 KB | Output is correct |
18 | Correct | 18 ms | 9976 KB | Output is correct |
19 | Correct | 20 ms | 10744 KB | Output is correct |
20 | Correct | 13 ms | 6904 KB | Output is correct |
21 | Correct | 22 ms | 11384 KB | Output is correct |