50pts求助
查看原帖
50pts求助
837487
Koixauy楼主2025/1/20 17:50
#include<bits/stdc++.h>
using namespace std;
string s;
bool type,lxp,ck[6];
int sum,lx[6],mx[6];
queue<int> q;
int main()
{
	cin>>s>>type;
	for(size_t cur=0;cur<s.size();cur++)
	{
		char i=s[cur];
		if(i==39)
			continue;
		if(i=='(')
		{
			lxp=true;
			continue;
		}
		else if(i==')'&&lxp)
		{
			if(s[cur+1]!='(')
				lxp=false;
			while(!q.empty())
			{
				ck[q.front()]=true;
				lx[q.front()]++;
				q.pop();
			}
			for(int j=1;j<=4;j++)
				if(!ck[j])
				{
					mx[j]=max(mx[j],lx[j]);
					lx[j]=0;
				}
			sum++;
		}
		else if(!lxp)
			sum++;
		fill(ck+1,ck+4,false);
		switch(i)
		{
			case 'L':
				if(s[cur+1]==39)
				{
					if(lxp)
						q.push(2);
					else
						ck[2]=true;
				}
				else
				{
					if(lxp)
						q.push(1);
					else
						ck[1]=true;
				}
				break;
			case 'R':
				if(s[cur+1]==39)
				{
					if(lxp)
						q.push(4);
					else
						ck[4]=true;
				}
				else
				{
					if(lxp)
						q.push(3);
					else
						ck[3]=true;
				}
				break;
		}
		if(!lxp)
		{
			for(int j=1;j<=4;j++)
				if(ck[j])
					lx[j]++;
				else
				{
					mx[j]=max(mx[j],lx[j]);
					lx[j]=0;
				}
		}
	}
	cout<<sum<<'\n';
	if(type)	
	{
		for(int i=1;i<=4;i++)
			cout<<mx[i]<<' ';
	}
	return 0;
}

据调试,这份代码无法记录右手中指的最大连续敲击拍数(即对于任何数据,其记录都为0)
(这题不是橙题吗怎么这么离谱

2025/1/20 17:50
加载中...