比赛 CSP2023-J模拟赛 评测结果 ATTTTTTTTT
题目名称 复制题目 最终得分 10
用户昵称 心灵震荡 运行时间 9.000 s
代码语言 C++ 内存使用 5.64 MiB
提交时间 2023-10-18 19:54:59
显示代码纯文本
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int N = 305;
  5. int n, m, ans;
  6. char a[N][N], v[N * N];
  7. stack<int> l;
  8.  
  9. void dfs(int x, int y, int t)
  10. {
  11. v[t] = a[x][y];
  12. if(x > n || y > m) return;
  13. int res = 0, flag = 1;
  14. stack<int> stk;
  15. for(int i = 1; i <= t; i++)
  16. {
  17. if(v[i] == '(') {stk.push(i); continue;}
  18. if(stk.empty()) {flag = 0; break;}
  19. res += i - stk.top(); stk.pop();
  20. }
  21. if(flag && stk.empty()) ans = max(ans, res);
  22. dfs(x + 1, y, t + 1);
  23. dfs(x, y + 1, t + 1);
  24. return;
  25. }
  26.  
  27. int main()
  28. {
  29. freopen("copy.in", "r", stdin);
  30. freopen("copy.out", "w", stdout);
  31. ios :: sync_with_stdio(false);
  32. cin.tie(0), cout.tie(0);
  33. cin >> n >> m;
  34. for(int i = 1; i <= n; i++) cin >> (a[i] + 1);
  35. for(int i = 1; i <= n; i++)
  36. for(int j = 1; j <= m; j++)
  37. {
  38. if(a[i][j] == '(') memset(v, 0, sizeof v), dfs(i, j, 1);
  39. }
  40. cout << ans;
  41. return 0;
  42. }
  43.  
  44. /*
  45. ( ) ( ) (
  46. ( ( ) ) )
  47. ) ) ( ( )
  48.  
  49. ((()))
  50. */