比赛 |
CSP2023-J模拟赛 |
评测结果 |
ATTTTTTTTT |
题目名称 |
复制题目 |
最终得分 |
10 |
用户昵称 |
心灵震荡 |
运行时间 |
9.000 s |
代码语言 |
C++ |
内存使用 |
5.64 MiB |
提交时间 |
2023-10-18 19:54:59 |
显示代码纯文本
- #include <bits/stdc++.h>
- using namespace std;
-
- const int N = 305;
- int n, m, ans;
- char a[N][N], v[N * N];
- stack<int> l;
-
- void dfs(int x, int y, int t)
- {
- v[t] = a[x][y];
- if(x > n || y > m) return;
- int res = 0, flag = 1;
- stack<int> stk;
- for(int i = 1; i <= t; i++)
- {
- if(v[i] == '(') {stk.push(i); continue;}
- if(stk.empty()) {flag = 0; break;}
- res += i - stk.top(); stk.pop();
- }
- if(flag && stk.empty()) ans = max(ans, res);
- dfs(x + 1, y, t + 1);
- dfs(x, y + 1, t + 1);
- return;
- }
-
- int main()
- {
- freopen("copy.in", "r", stdin);
- freopen("copy.out", "w", stdout);
- ios :: sync_with_stdio(false);
- cin.tie(0), cout.tie(0);
- cin >> n >> m;
- for(int i = 1; i <= n; i++) cin >> (a[i] + 1);
- for(int i = 1; i <= n; i++)
- for(int j = 1; j <= m; j++)
- {
- if(a[i][j] == '(') memset(v, 0, sizeof v), dfs(i, j, 1);
- }
-
- cout << ans;
- return 0;
- }
-
- /*
- ( ) ( ) (
- ( ( ) ) )
- ) ) ( ( )
-
- ((()))
- */