#include<iostream>
#include<cstring>
using namespace std;
const int N=1100, M=1100, inf=0x3f3f3f3f;
int a[N], b[M], c[N][M], mn[N];
int main()
{
// freopen("game.in","r",stdin);
// freopen("game.out","w",stdout);
int n, m, q; scanf("%d%d%d", &n, &m, &q);
bool bk=true;
for(int i=1;i<=n;i++)
{ scanf("%d", &a[i]);
if(!a[i]) {bk=false;}
}
for(int j=1;j<=m;j++)
{
scanf("%d", &b[j]);
if(!b[j]) {bk=false;}
}
if(bk) memset(mn, inf, sizeof(mn));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
c[i][j]=a[i]*b[j];
mn[i]=min(mn[i], c[i][j]);
}
}
while(q--)
{
int l1, r1, l2, r2, ans=inf;
scanf("%d%d%d%d", &l1, &r1, &l2, &r2);
if(l1==r1)
{
for(int i=l2;i<=r2;i++)
{
ans=min(ans, c[l1][i]);
}
printf("%d\n", ans);
continue;
}
else if(l2==r2)
{
ans=-inf;
for(int i=l1;i<=r1;i++)
{
ans=max(ans, c[i][l2]);
}
printf("%d\n", ans);
continue;
}
else if(bk)
{
int xx, mx=0;
for(int i=1;i<=n;i++)
{
if(mn[i]>mx&&mn[i]!=inf) xx=i, mx=mn[i];
}
for(int i=1;i<=m;i++)
{
ans=min(c[xx][i], ans);
}
printf("%d\n", ans);
continue;
}
else
{
for(int i=l1;i<=r1;i++)
{
for(int j=l2;j<=r2;j++)
{
ans=min(ans, c[i][j]);
}
}
}
printf("%d\n", ans);
}
return 0;
}
按理说应该会骗到一点分啊?为什么全wa。求助