rt,Substack2 WA了3个点
#include<bits/stdc++.h>
int lg2[100010];
inline int read()
{
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
void init(int n)
{
lg2[0]=-1;
for(int i=1;i<=n;i++) lg2[i]=lg2[i>>1]+1;
return;
}
using namespace std;
class STT{
public:
int flag;
int st[100010][20];
int sz;
int get(int a,int b)
{
return (flag*(a-b)<0)? a : b;
}
STT(int *data,int sz,int _f)
{
flag=_f;
for(int i=1;i<=sz;i++)
st[i][0]=data[i];
for(int i=1;i<=lg2[sz];i++)
{
for(int j=1;j+(1<<i)-1<=sz;j++)
{
st[j][i]=get(st[j][i-1],st[j+(1<<(i-1))][i-1]);
}
}
}
int query(int l,int r)
{
int len=r-l+1;
return get(st[l][lg2[len]],st[r-(1<<lg2[len])+1][lg2[len]]);
}
};
namespace MZ
{
int n,m,q,a[100010],b[100010];
int c[100010];
int main()
{
n=read();m=read();q=read();
init(n);
for(int i=1;i<=n;i++)
{
a[i]=read();
}
STT amax(a,n,-1),amin(a,n,1);
for(int i=1;i<=n;i++)
{
if(a[i]<0)c[i]=0x7fffffff;
else c[i]=a[i];
}
STT apmin(c,n,1);
for(int i=1;i<=n;i++)
{
if(a[i]>=0)c[i]=0x80000000;
else c[i]=a[i];
}
STT anmax(c,n,-1);
for(int i=1;i<=m;i++)
{
b[i]=read();
}
STT bmin(b,m,1),bmax(b,m,-1);
while(q--)
{
int l1=read(),r1=read(),l2=read(),r2=read();
long long ans=0x8000000000000000;
int maxa=amax.query(l1,r1);
int mina=amin.query(l1,r1);
int minpa=apmin.query(l1,r1);
int maxna=anmax.query(l1,r1);
int maxb=bmax.query(l2,r2);
int minb=bmin.query(l2,r2);
ans=max(ans,1ll*maxa*(maxa>=0?minb:maxb));
ans=max(ans,1ll*mina*(mina>=0?minb:maxb));
if(minpa!=0x7fffffff)ans=max(ans,1ll*minpa*(minpa>=0?minb:maxb));
if(maxna!=0x80000000)ans=max(ans,1ll*maxna*(maxna>=0?minb:maxb));
cout<<ans<<endl;
}
return 0;
}
}
int main()
{
return MZ::main();
}