#include<bits/stdc++.h>
#define ll long long
using namespace std;
int xma0[114514][30],xma1[114514][30],xmi0[114514][30],xmi1[114514][30];
// 0>=0,1<0;
int yma[114514][30],ymi[114514][30];
int n,m,q,gn[30],gm[30];
int main(){
cin>>n>>m>>q;
memset(xma0,0xcf,sizeof(xma0));
memset(xma1,0xcf,sizeof(xma1));
memset(xmi0,0x3f,sizeof(xmi0));
memset(xmi1,0x3f,sizeof(xmi1));
memset(yma,0xcf,sizeof(yma));
memset(ymi,0x3f,sizeof(ymi));
gn[1]=gm[1]=0;
for(int i=2;i<=n;i++)gn[i]=gn[i>>1]+1;
for(int i=2;i<=m;i++)gm[i]=gm[i>>1]+1;
for(int i=1;i<=n;i++){
int x;
cin>>x;
xma0[i][0]=xmi1[i][0]=x;
if(x<0)xma1[i][0]=x;
if(x>=0)xmi0[i][0]=x;
}
for(int i=1;i<=m;i++){
int y;
cin>>y;
yma[i][0]=ymi[i][0]=y;
}
for(int j=1;j<=gn[n];j++){
for(int i=1;i<=n-(1<<j)+1;i++){
xma0[i][j]=max(xma0[i][j-1],xma0[i+(1<<(j-1))][j-1]);
xma1[i][j]=max(xma1[i][j-1],xma1[i+(1<<(j-1))][j-1]);
xmi0[i][j]=min(xmi0[i][j-1],xmi0[i+(1<<(j-1))][j-1]);
xmi1[i][j]=min(xmi1[i][j-1],xmi1[i+(1<<(j-1))][j-1]);
}
}
for(int j=1;j<=gm[m];j++){
for(int i=1;i<=m-(1<<j)+1;i++){
yma[i][j]=max(yma[i][j-1],yma[i+(1<<(j-1))][j-1]);
ymi[i][j]=min(ymi[i][j-1],ymi[i+(1<<(j-1))][j-1]);
}
}
while(q--){
ll l1,r1,l2,r2,s1,s2;
ll xmax0,xmax1,xmin0,xmin1;
ll ymax,ymin;
ll ans=INT_MIN;
cin>>l1>>r1>>l2>>r2;
s1=r1-l1+1;
s2=r2-l2+1;
ll t=r1-(1<<gn[s1])+1;
xmax0=max(xma0[l1][gn[s1]],xma0[t][gn[s1]]);//>=0 max
xmax1=max(xma1[l1][gn[s1]],xma1[t][gn[s1]]);//<0 max
xmin0=min(xmi0[l1][gn[s1]],xmi0[t][gn[s1]]);//>=0 min
xmin1=min(xmi1[l1][gn[s1]],xmi1[t][gn[s1]]);//<0 min;
ymax=max(yma[l2][gm[s2]],yma[r2-(1<<gm[s2])+1][gm[s2]]);
ymin=min(ymi[l2][gm[s2]],ymi[r2-(1<<gm[s2])+1][gm[s2]]);
//cout<<xmax0<<" "<<xmax1<<" "<<xmin0<<" "<<xmin1<<endl;
//cout<<ymax<<" "<<ymin<<endl;
xmin1=min(xmin1,xmin0);
xmax0=max(xmax0,xmax1);
ans=max(ans,xmax0*(xmax0>=0?ymin:ymax));
ans=max(ans,xmin1*(xmin1>=0?ymin:ymax));
if(xmax1>INT_MIN){
ans=max(ans,xmax1*ymax);
}
if(xmin0<INT_MAX){
ans=max(ans,xmin0*ymin);
}
cout<<ans<<endl;
}
return 0;
}
太菜了