比赛 CSP2023-J模拟赛 评测结果 ATTTTTTTTT
题目名称 复制题目 最终得分 10
用户昵称 蜀山鸭梨大 运行时间 9.000 s
代码语言 C++ 内存使用 5.59 MiB
提交时间 2023-10-18 20:28:25
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,mapp[310][310],b[2][2]={1,0,0,1},num;
long long ans;
char a[310][310];
stack <char> s;
void dfs(int x,int y,int e){
//	stack <char> s4=s;
//	while(s4.size()){
//		cout<<s4.top()<<" ";
//		s4.pop();
//	}
//	cout<<endl<<x<<" "<<y<<" "<<e<<endl<<endl;
	if(!e&&s.size()){
		long long ans2=0;
		int i=s.size();
		stack <char> s2=s;
		stack <int> s3;
		while(s2.size()){
//			cout<<s2.top()<<" ";
			if(s2.top()==')'){
				s3.push(i);
			}
			else{
				ans2+=abs(s3.top()-i);
				s3.pop();
			}
			s2.pop();
			i--;
		}
//		cout<<ans2<<" "<<x<<" "<<y<<" "<<endl;
//		cout<<endl;
		ans=max(ans,ans2);
	}
	for(int i=0;i<2;i++){
		int xx=x+b[i][0],yy=y+b[i][1];
		if(xx>=1&&xx<=n&&yy>=1&&yy<=m){
//			cout<<xx<<" "<<yy<<endl;
			if(a[xx][yy]=='('){
				s.push(a[xx][yy]);
				dfs(xx,yy,e+1);
				s.pop();
			}
			else{
				if(e){
					s.push(a[xx][yy]);
					dfs(xx,yy,e-1);
					s.pop();
				}
			}
		}
	}
	return ;
}
int main(){
	freopen("copy.in","r",stdin);
	freopen("copy.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(a[i][j]!=')'){
//				cout<<"* "<<i<<" "<<j<<endl;
				s.push(a[i][j]);
				dfs(i,j,1);
				s.pop();
			}
		}
	}
	cout<<ans;
	return 0;
}