但是很显然,评测记录:https://www.luogu.com.cn/record/128408019
#include<bits/stdc++.h>
using namespace std;
const int maxn_nm=1e6;
const int maxn_c=1e4;
int n,m,q;
int A[maxn_nm],B[maxn_nm];
long long C[maxn_c][maxn_c];
long long dp[maxn_c][maxn_c];
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];}
for(int i=1;i<=n;i++)
{
for(int j=i;j<=m;j++)
{
C[i][j]=A[i]*B[j];
}
}
for(int i=1;i<=q;i++)
{
int l1,r1,l2,r2;
cin>>l1>>r1>>l2>>r2;
memset(dp, 0, sizeof(dp));
dp[l1][r1] = C[l1][r1];// l1 == r1
for (int i = l1 + 1; i <= r1; i++)
{
dp[i][r1] = max(dp[i][r1], C[i][r1] - C[i - 1][r1 - 1]);
}
for (int i = l1; i < r1; i++)
{
dp[i][r1] = max(dp[i][r1], dp[i + 1][r1]);
}
for (int i = l2; i <= r2; i++)
{
dp[l1][i] = max(dp[l1][i], C[l1][i] - C[l1][i - 1]);
}
for (int i = l1 + 1; i <= r1; i++)
{
dp[i][l2] = max(dp[i][l2], C[i][l2] - C[i - 1][l2 - 1]);
}
for (int i = l1; i < r1; i++)
{
dp[i][l2] = max(dp[i][l2], dp[i + 1][l2]);
}
int ans = max(dp[l1][r1], dp[l2][r2]);
cout << ans << endl;
}
return 0;
}