85分有TLE求助
  • 板块P8563 Magenta Potion
  • 楼主int08
  • 当前回复11
  • 已保存回复11
  • 发布时间2022/10/12 12:48
  • 上次更新2023/10/27 07:48:44
查看原帖
85分有TLE求助
508032
int08楼主2022/10/12 12:48

rt

话说我这么暴力做应该不是正解吧(

#include<bits/stdc++.h>
using namespace std;
long long i,a[234567],b=1,l,r,lf,rf,la,ra,q,n,j,k,u=1073741824;bool t;
int main()
{
	cin>>n>>q;
	for(i=1;i<=n;i++) cin>>a[i];
	for(i=1;i<=q;i++)
	{
		cin>>b>>l>>r;
		if(b==1)
		{
			a[l]=r;
			continue;
		}
		if(l-r>=61)
		{
			cout<<"Too large\n";
			continue;
		}
		b=0;lf=-1;la=ra=1;t=0;
		for(j=l;j<=r;j++)
		{
			if(a[j]<0)
			{
				rf=j;
				if(lf==-1) lf=j;
				b++;
			}
		}
		if(b%2==0)
		{
			for(j=l;j<=r;j++)
			{
				la*=abs(a[j]);
				if(la>u)
				{
					cout<<"Too large\n";t=1;break;
				}
			}
			if(!t) cout<<la<<endl;
			continue;
		}
		for(j=l;j<rf;j++)
		{
			la*=abs(a[j]);
			if(la>u)
			{
				cout<<"Too large\n";t=1;break;
			}
		}
		if(t) continue;
		for(j=lf+1;j<=r;j++)
		{
			ra*=abs(a[j]);
			if(ra>u)
			{
				cout<<"Too large\n";t=1;break;
			}
		}
		if(!t) cout<<max(la,ra)<<endl;
	}
	return 0;
}
2022/10/12 12:48
加载中...