数据过水,请求加强数据
查看原帖
数据过水,请求加强数据
482660
konyakest楼主2022/10/4 10:21

rt

这份代码最坏时间复杂度为O(nq),但是过了

#include <bits/stdc++.h>
using namespace std;
#define F(i,j,k) for (signed i=signed(j);i<=signed(k);i++)
#define endl '\n'
#define int long long
const int maxn=2e5+5,maxnum=1073741824;

int a[maxn],m,n,op,l,r;

signed main() { 
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	F(i,1,n) cin>>a[i];
	F(i,1,m){
		cin>>op>>l>>r;
		if(op==1) a[l]=r;
		else{
			int mx=1,ans=1;
			F(i,l,r){
				ans*=a[i];
				mx=max(mx,ans);
				if(ans>maxnum) {cout<<"Too large\n";goto _end;}
				if(ans<-maxnum) ans=-maxnum;
			}
			ans=1;
			for(int i=r;i>=l;i--){
				ans*=a[i];
				mx=max(mx,ans);
				if(ans>maxnum) {cout<<"Too large\n";goto _end;}
				if(ans<-maxnum) ans=-maxnum;
			}
			cout<<mx<<endl;
			_end:;
		}
	}
	return 0; 
}

hack

2022/10/4 10:21
加载中...