求助,本地能运行且样例正确,但提交时显示编译失败。
查看原帖
求助,本地能运行且样例正确,但提交时显示编译失败。
1413040
Hayya楼主2024/12/5 16:58
#include<bits/stdc++.h>
using namespace std;
char a[1000050];
int f[1000050],g[1000050],stack1[1000050],stack2[1000050],top1,top2,m,index;
int main()
{
	ios::sync_with_stdio(false);
	cin>>a;
	for(int i=0;i<strlen(a);i++)
	{
		if(a[i]=='(')
		{
			stack1[++top1]=i;
			if(i==0)
			{
				f[i]=0;
				g[i]=0;
				continue;
			}
			f[i]=f[i-1];
			g[i]=0;
		}
		else if(a[i]=='[')
		{
			stack2[++top2]=i;
			if(i==0)
			{
				f[i]=0;
				g[i]=0;
				continue;
			}
			f[i]=f[i-1];
			g[i]=0;
		}
		else if(a[i]==')')
		{
			if(i==0)
			{
				f[i]=0;
				g[i]=0;
				continue;
			}
			if(top1>0&&g[i-1]==i-stack1[top1]-1)
			{
				g[i]=g[i-1]+2+g[stack1[top1]-1];
				if(g[i]>f[i-1])
				f[i]=g[i];
				else
				f[i]=f[i-1];
				top1--;
			}
			else
			{
				g[i]=0;
				f[i]=f[i-1];
			}
		}
		else
		{
			if(i==0)
			{
				f[i]=0;
				g[i]=0;
				continue;
			}
			if(top2>0&&g[i-1]==i-stack2[top2]-1)
			{
				g[i]=g[i-1]+2+g[stack2[top2]-1];
				if(g[i]>f[i-1])
				f[i]=g[i];
				else
				f[i]=f[i-1];
				top2--;
			}
			else
			{
				g[i]=0;
				f[i]=f[i-1];
			}
		}
		if(g[i]>m)
		{
			m=g[i];
			index=i;
		}
	}
	for(int i=index-m+1;i<=index;i++)
	cout<<a[i];
	return 0;
}
2024/12/5 16:58
加载中...