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