比赛 |
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;
}
/*
( ) ( ) (
( ( ) ) )
) ) ( ( )
((()))
*/