[额](https://www.luogu.com.cn/record/92476720)
怎么说呢,不开long long见祖宗
还有,你这个算法是暴力 $O(qn)$ 的, $1e5$ 的数据你跑不过去,建议用 ST 表
在你代码上随便修改了一下,能过 $1,2,3,6,7,8,9$
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,m,q;
long long a[100005],b[100005];
int l1,l2,r1,r2;
int ms;
int main()
{
cin>>n>>m>>q;
ms=1;
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
if(a[i]<=0) ms=0;
}
for(int i=1;i<=m;i++)
{
scanf("%lld",&b[i]);
if(b[i]<=0) ms=0;
}
while(q--)
{
long long lmaxx=0,rminx=0x7f7f7f7f,lminx=0x7f7f7f7f,rmaxx=0;
scanf("%d%d%d%d",&l1,&r1,&l2,&r2);
if(ms==1)
{
for(int i=l1;i<=r1;i++)
lmaxx=max(lmaxx,a[i]),lminx=min(lminx,a[i]);
for(int i=l2;i<=r2;i++)
rmaxx=max(lmaxx,b[i]),rminx=min(rminx,b[i]);
printf("%lld\n",lmaxx*rminx);
continue;
}
if(l1==r1)
{
lmaxx=lminx=a[r1];
int have0=0;
for(int i=l2;i<=r2;i++)
{
rmaxx=max(rmaxx,b[i]),rminx=min(rminx,b[i]);
if(b[i]==0) have0=1;
}
if(lmaxx>0)
printf("%lld\n",lmaxx*rminx);
if(lmaxx<0)
printf("%lld\n",lmaxx*rmaxx);
if(lmaxx==0)
printf("0\n");
continue;
}
if(l2==r2)
{
rmaxx=rminx=b[r2];
for(int i=l1;i<=r1;i++)
lmaxx=max(lmaxx,a[i]),lminx=min(lminx,a[i]);
if(rmaxx>0)
printf("%lld\n",rmaxx*lmaxx);
if(rmaxx<0)
printf("%lld\n",rmaxx*lminx);
if(rmaxx==0)
printf("0\n");
continue;
}
}
return 0;
}
```
by lenlen @ 2022-11-01 19:44:57