RT,这是我的代码
#include<bits/stdc++.h>
using namespace std;
int n,m,q;
long long a[10005],b[10005];
long long c[10005][10005];
int main()
{
//freopen("game.in","r",stdin);
//freopen("game.out","w",stdout);
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 j=1;j<=n;j++)
{
c[j][i]=a[j]*b[i];
}
}
while(q--)
{
int u,d,l,r;
cin>>u>>d>>l>>r;
long long cmpm=0-1e+18-5;
for(int i=u;i<=d;i++)
{
long long cmp=1e+18+5;
for(int j=l;j<=r;j++)
{
cmp=min(cmp,c[i][j]);
}
cmpm=max(cmp,cmpm);
}
cout<<cmpm<<endl;
}
return 0;
}
样例1
| 0 | 0 |
|---|---|
| -3 | 4 |
| 6 | -8 |
l1,r1用来框出列
例如样例1第1次输入l1,r1 为1,3;
那么我框出
| 0 | 0 |
|---|---|
| -3 | 4 |
| 6 | -8 |
l2,r2用来框出行
例如样例1第2次输入l2,r2 为1,2
那么我框出
| 0 | 0 |
|---|---|
| -3 | 4 |
| 6 | -8 |
显然什么事情没有发生
把每行最小的数字找出来
即0,-3,-8;
再找出0,-3,-8的最大数
即0
所以输出0;
样例1第2次输入l1,r1 为2,3
那么我框出
| -3 | 4 |
|---|---|
| 6 | -8 |
l2,r2用来框出行
例如样例1第2次输入l2,r2 为2,2
那么我再框出
| 4 |
|---|
| -8 |
然后把每行最小的数字找出来
即4,-8;
再找出4,-8中最大的数字;即4;输出