民间数据全过,官方数据0pts
[6](https://www.luogu.com.cn/record/98936141)
by w9095 @ 2023-01-07 16:37:21
@[w9095](/user/569235) 更正,40pts
by w9095 @ 2023-01-07 16:37:50
已AC,此贴结
by w9095 @ 2023-01-07 17:07:22
我也40分,怎么调啊
```cpp
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=200009;
const ll INF=1e18+7;
ll n,m,q,a[N],b[N],st[7][36][N];
inline void ST1(){
for(ll i=1;i<=n;i++) st[1][0][i]=a[i];
ll p=log(n)/log(2);
for(ll k=1;k<=p;k++)
for(ll i=1;i<=n-(1<<k)+1;i++)
st[1][k][i]=max(st[1][k-1][i],st[1][k-1][i+(1<<(k-1))]);
}
inline void ST2(){
for(ll i=1;i<=n;i++) st[2][0][i]=a[i];
ll p=log(n)/log(2);
for(ll k=1;k<=p;k++)
for(ll i=1;i<=n-(1<<k)+1;i++)
st[2][k][i]=min(st[2][k-1][i],st[2][k-1][i+(1<<(k-1))]);
}
inline void ST3(){
for(ll i=1;i<=n;i++)
if(a[i]<0) st[3][0][i]=a[i];
else st[3][0][i]=-INF;
ll p=log(n)/log(2);
for(ll k=1;k<=p;k++)
for(ll i=1;i<=n-(1<<k)+1;i++)
st[3][k][i]=max(st[3][k-1][i],st[3][k-1][i+(1<<(k-1))]);
}
inline void ST4(){
for(ll i=1;i<=n;i++)
if(a[i]>=0) st[4][0][i]=a[i];
else st[4][0][i]=INF;
ll p=log(n)/log(2);
for(ll k=1;k<=p;k++)
for(ll i=1;i<=n-(1<<k)+1;i++)
st[4][k][i]=min(st[4][k-1][i],st[4][k-1][i+(1<<(k-1))]);
}
inline void ST5(){
for(ll i=1;i<=m;i++) st[5][0][i]=b[i];
ll p=log(m)/log(2);
for(ll k=1;k<=p;k++)
for(ll i=1;i<=m-(1<<k)+1;i++)
st[5][k][i]=max(st[5][k-1][i],st[5][k-1][i+(1<<(k-1))]);
}
inline void ST6(){
for(ll i=1;i<=m;i++) st[6][0][i]=b[i];
ll p=log(m)/log(2);
for(ll k=1;k<=p;k++)
for(ll i=1;i<=m-(1<<k)+1;i++)
st[6][k][i]=min(st[6][k-1][i],st[6][k-1][i+(1<<(k-1))]);
}
ll query(ll l1,ll r1,ll l2,ll r2){
ll ans=-INF;
ll p1=log(r1-l1+1)/log(2),p2=log(r2-l2+1)/log(2);
ll miny=min(st[6][p2][l2],st[6][p2][r2-(1<<p2)+1]);
ll maxy=max(st[5][p2][l2],st[5][p2][r2-(1<<p2)+1]);
if(miny>0)
ans=max(ans,miny*max(st[1][p1][l1],st[1][p1][r1-(1<<p1)+1]));
if(miny<=0)
if(min(st[4][p1][l1],st[4][p1][r1-(1<<p1)+1])<INF)
ans=max(ans,miny*min(st[4][p1][l1],st[4][p1][r1-(1<<p1)+1]));
if(maxy>0)
if(max(st[3][p1][l1],st[3][p1][r1-(1<<p1)+1])>-INF)
ans=max(ans,maxy*max(st[3][p1][l1],st[3][p1][r1-(1<<p1)+1]));
if(maxy<=0)
ans=max(ans,maxy*min(st[2][p1][l1],st[2][p1][r1-(1<<p1)+1]));
return ans;
}
int main(){
cin>>n>>m>>q;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=m;i++) cin>>b[i];
//cout<<"qwq"<<endl;
ST1(); ST2(); ST3(); ST4(); ST5(); ST6();
//cout<<"qaq"<<endl;
while(q--){
ll l1,r1,l2,r2;
cin>>l1>>r1>>l2>>r2;
cout<<query(l1,r1,l2,r2)<<endl;
}
return 0;
}
```
by Yujinhe469 @ 2023-02-25 12:02:54
我也40!
by ssSSSss_sunhaojia @ 2023-04-24 21:52:24