@[brownball](/user/495599) 目测是情况未讨论完呢
by Missdie @ 2023-11-15 07:31:35
@[Missdie](/user/995040) 感谢亲,已改,好消息是有40pts了
```cpp
#include<iostream>
#include<cstdio>
using namespace std;
long long mx=999999999999,nx=-999999999999;
int n,m,q;
int l1,r1,l2,r2;
long long a,b;
long long maxx[100010][50],minn[100010][50],z[100010][50],f[100010][50];
//用于存储a数组的最大,最小,正区间最小,负区间最大
long long b1[100010][50],b2[100010][50];
//用于存储b数组的最大值和最小值
long long lg1[100010]={-1},lg2[100010]={-1};
//倍增
int main(){
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=n;i++){
scanf("%lld",&a);
lg1[i]=lg1[i/2]+1;
maxx[i][0]=a;
minn[i][0]=a;
if(a>=0)z[i][0]=a;
else z[i][0]=mx;
if(a<0)f[i][0]=a;
else f[i][0]=nx;
}
for(int i=1;i<=m;i++){
scanf("%lld",&b);
lg2[i]=lg2[i/2]+1;
b1[i][0]=b;
b2[i][0]=b;
}//输入
for(int i=1;i<=lg1[n];i++){
for(int j=1;j+(1<<i)-1<=n;j++){
int p=j+(1<<(i-1));
maxx[j][i]=max(maxx[j][i-1],maxx[p][i-1]);
minn[j][i]=min(minn[j][i-1],minn[p][i-1]);
z[j][i]=min(z[j][i-1],z[p][i-1]);
f[j][i]=max(f[j][i-1],f[p][i-1]);
}
}
for(int i=1;i<=lg2[m];i++){
for(int j=1;j+(1<<i)-1<=n;j++){
int p=j+(1<<(i-1));
b1[j][i]=max(b1[j][i-1],b1[p][i-1]);
b2[j][i]=min(b2[j][i-1],b2[p][i-1]);
}
}//a和b的st表预处理
long long maxa,maxb;//a和b的选值
long long zz1,zz2,zz3,zz4,zz;//4种情况
long long a1,a2,a3,a4,bx,by;//6个值
int len1,len2,p1,p2;
//最后求值
for(int i=1;i<=q;i++){
scanf("%d%d%d%d",&l1,&r1,&l2,&r2);
len1=lg1[r1-l1+1];len2=lg2[r2-l2+1];
p1=r1-(1<<len1)+1;p2=r2-(1<<len2)+1;
zz1=zz2=zz3=zz4=nx;//初始化
bx=max(b1[l2][len2],b1[p2][len2]);//最大
by=min(b2[l2][len2],b2[p2][len2]);//最小
a1=max(maxx[l1][len1],maxx[p1][len1]);//最大(正数
a2=min(minn[l1][len1],minn[p1][len1]);//最小(负数
a3=min(z[l1][len1],z[p1][len1]);//正数最小
a4=max(f[l1][len1],f[p1][len1]);//负数最大
if(a1>=0)zz1=a1*by;
else zz1=a1*bx;
if(a2<0)zz2=a2*bx;
else zz2=a2*by;
if(a3!=mx)zz3=a3*by;
if(a4!=nx)zz4=a4*bx;
zz=max(max(zz1,zz2),max(zz3,zz4));
printf("%lld\n",zz);
}
return 0;
}
```
by CSZD @ 2023-11-15 08:10:28
应该还有全是负或全是正的? @[brownball](/user/495599)
by Missdie @ 2023-11-15 08:13:56