求助,90,#5
查看原帖
求助,90,#5
672757
封禁用户楼主2024/8/13 21:29
#include<bits/stdc++.h>
using namespace std;
string nn; 
long long i,n;
long long get(long long x)
{
	long long s=0;
	for(long long v=x;v<n;v++)
	{
		if(nn[v]>='0'&&nn[v]<='9')
		{
			s*=10,s+=(nn[v]-'0');
		}
		else
		{
			return s;
		}
	}
	return s;
}
void dd(long long a,long long b)
{
	long long j=a;
	while(j<b)
	{
		if(nn[j]=='F')
		{
			i+=get(j+3);
			for(long long v=j+3;v<=b;v++)
			{
				if(nn[v]==' ')
				{
					j=v+1;
					break;
				}
				else
				{
					if(v==b)
					{
						j=b;
					}
				}
			}
		}
		else
		{
			if(nn[j]=='B')
			{
				i-=get(j+3);
				for(long long v=j+3;v<=b;v++)
				{
					if(nn[v]==' ')
					{
						j=v+1;
						break;
					}
					else
					{
						if(v==b)
						{
							j=b;
						}
					}
				}
			}
			else
			{
				long long ka,kb,t=1,nu=get(j+7);
				for(long long v=j;v<=b;v++)
				{
					if(nn[v]=='[')
					{
						ka=v;
						break;
					}
				}
				for(long long v=ka+1;v<=b;v++)
				{
					if(nn[v]=='[')
					{
						t++;
					}
					else
					{
						if(nn[v]==']')
						{
							t--;
							if(t<1)
							{
								kb=v;
								break;
							}
						}
					}
				}
				for(long long i=1;i<=nu;i++)
				{
					dd(ka+1,kb-1);
				}
				j=kb+2;
			}
		}
	}
}
int main()
{
	getline(cin,nn);
	n=nn.size();
	dd(0,n-1);
	cout<<abs(i);
	return 0;
}
2024/8/13 21:29
加载中...