75分求调
查看原帖
75分求调
738079
FISHERMANS楼主2022/10/12 13:23
#include<bits/stdc++.h>
#define N 200010
typedef long long LL;
using namespace std;
int n,q;
int a[N];
int t,l,r;
LL max(int a,LL b){
	if(a>b) return a;
	else return b;
}
LL min(int a,LL b){
	if(a<b) return a;
	else return b;
}
void maxProduct(int l,int r) {
    LL iMax = 1, iMin = 1,ans=1;
    for(int i = l; i <= r; i++) {
        if(a[i] < 0) swap(iMax, iMin);
        iMax = max(a[i], iMax*a[i]);
        iMin = min(a[i], iMin*a[i]);
        ans = max(iMax, ans);
        if(ans>(1<<30)) {
		    printf("Too large\n");return;
		}
    }
	printf("%d\n",ans);
}

int main(){
	scanf("%d%d",&n,&q);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	while(q--){
		scanf("%d%d%d",&t,&l,&r);
		if(t==1) a[l]=r;
		else maxProduct(l,r);
	}
	return 0;
}

75分求调

2022/10/12 13:23
加载中...