#include<bits/stdc++.h>
#define int long long
using namespace std;
bool gmx(int &a, int b) {
return b>a?a=b,true:false;
}
int n,m,q,a[100001],b[100001],max_a[100001][20],min_a[100001][20],max_b[100001][20],min_b[100001][20],fax[100001][20],fin[100001][20],l1,r1,l2,r2;
signed main(){
scanf("%lld%lld%lld",&n,&m,&q);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
max_a[i][0]=min_a[i][0]=a[i];
fax[i][0]=(a[i]<0?a[i]:LONG_LONG_MIN);
fin[i][0]=(a[i]>=0?a[i]:LONG_LONG_MAX);
}
for(int i=1;i<=m;i++) scanf("%lld",&b[i]),max_b[i][0]=min_b[i][0]=b[i];
for(int j=1;j<=20;j++) for(int i=1;i+(1<<j)-1<=n;i++) min_a[i][j]=min(min_a[i][j-1],min_a[i+(1<<(j-1))][j-1]),max_a[i][j]=max(max_a[i][j-1],max_a[i+(1<<(j-1))][j-1]),fax[i][j]=max(fax[i][j-1],fax[i+(1<<(j-1))][j-1]),fin[i][j]=min(fin[i][j-1],fin[i+(1<<(j-1))][j-1]);
for(int j=1;j<=20;j++) for(int i=1;i+(1<<j)-1<=m;i++) min_b[i][j]=min(min_b[i][j-1],min_b[i+(1<<(j-1))][j-1]),max_b[i][j]=max(max_b[i][j-1],max_b[i+(1<<(j-1))][j-1]);
while(q--){
long long ans=LONG_LONG_MIN;
scanf("%lld%lld%lld%lld",&l1,&r1,&l2,&r2);
long long maxa=max(max_a[l1][(int)log2(r1-l1+1)],max_a[r1-(1<<(int)log2(r1-l1+1))+1][(int)log2(r1-l1+1)]);
long long mina=min(min_a[l1][(int)log2(r1-l1+1)],min_a[r1-(1<<(int)log2(r1-l1+1))+1][(int)log2(r1-l1+1)]);
long long maxb=max(min_b[l2][(int)log2(r2-l2+1)],max_b[r2-(1<<(int)log2(r2-l2+1))+1][(int)log2(r2-l2+1)]);
long long minb=min(min_b[l2][(int)log2(r2-l2+1)],min_b[r2-(1<<(int)log2(r2-l2+1))+1][(int)log2(r2-l2+1)]);
long long fmax=max(fax[l1][(int)log2(r1-l1+1)],fax[r1-(1<<(int)log2(r1-l1+1))+1][(int)log2(r1-l1+1)]);
long long fmin=min(fin[l1][(int)log2(r1-l1+1)],fin[r1-(1<<(int)log2(r1-l1+1))+1][(int)log2(r1-l1+1)]);
gmx(ans,maxa*(maxa>=0?minb:maxb));
gmx(ans,mina*(mina>=0?minb:maxb));
if(fmax!=LONG_LONG_MIN) gmx(ans,fmax*(fmax>=0?minb:maxb));
if(fmin!=LONG_LONG_MAX) gmx(ans,fmin*(fmin>=0?minb:maxb));
printf("%lld\n",ans);
}
return 0;
}
有帮助必定给予关注/bx