全WA求调
查看原帖
全WA求调
251074
学习柯学楼主2024/10/6 21:26
#include<bits/stdc++.h>
using namespace std;
long long n, m, q, a[100005], b[100005], i, j, sta1[100005][55], sta2[100005][55], sta3[100005][55], sta4[100005][55], stb1[100005][55], stb2[100005][55], l1, r1, l2, r2, ans;
long long amax, amin, bmax, bmin, _amax, _amin, s1, s2;
int main() {
	cin>>n>>m>>q;
	for(i=1; i<=n; i++) {
		cin>>a[i];
		sta1[i][0]=sta2[i][0]=a[i];
		if(a[i]>=0) {
			sta3[i][0]=a[i];
			sta4[i][0]=LONG_LONG_MIN;
		} else {
			sta3[i][0]=LONG_LONG_MAX;
			sta4[i][0]=a[i];
		}
	}
	for(i=1; i<=m; i++) {
		cin>>b[i];
		stb1[i][0]=stb2[i][0]=b[i];
	}
	for(j=1; j<=log2(n); j++) {
		for(i=1; i<=n-(long long)(pow(2,j))+1; i++) {
			sta1[i][j]=max(sta1[i][j-1],sta1[i+(long long)(pow(2,j-1))][j-1]);
			sta2[i][j]=min(sta2[i][j-1],sta2[i+(long long)(pow(2,j-1))][j-1]);
			sta3[i][j]=min(sta3[i][j-1],sta3[i+(long long)(pow(2,j-1))][j-1]);
			sta4[i][j]=max(sta4[i][j-1],sta4[i+(long long)(pow(2,j-1))][j-1]);
		}
	}
	for(j=1; j<=log2(m); j++) {
		for(i=1; i<=m-(long long)(pow(2,j))+1; i++) {
			stb1[i][j]=max(stb1[i][j-1],stb1[i+(long long)(pow(2,j-1))][j-1]);
			stb2[i][j]=min(stb2[i][j-1],stb2[i+(long long)(pow(2,j-1))][j-1]);
		}
	}
	while(q--) {
		ans=LONG_LONG_MIN;
		cin>>l1>>r1>>l2>>r2;
		s1=max((int)(log2(r1-l1)),0);
		s2=max((int)(log2(r2-l2)),0);
		amax=max(sta1[l1][s1], sta1[r1-(long long)pow(2,s1)+1][s1]);
		amin=min(sta2[l1][s1], sta2[r1-(long long)pow(2,s1)+1][s1]);
		_amax=min(sta3[l1][s1], sta3[r1-(long long)pow(2,s1)+1][s1]);
		_amin=max(sta4[l1][s1], sta4[r1-(long long)pow(2,s1)+1][s1]);
		bmax=max(stb1[l2][s2], stb1[r2-(long long)pow(2,s2)+1][s2]);
		bmin=min(stb2[l2][s2], stb2[r2-(long long)pow(2,s2)+1][s2]);
		ans=max(ans,amax*bmin);
		ans=max(ans,amin*bmax);
		ans=max(ans,_amax*bmin);
		ans=max(ans,_amin*bmax);
		cout<<ans<<endl;
	}
	return 0;
}

小样例能过,大样例不行

2024/10/6 21:26
加载中...