急,在线等
```
#include<bits/stdc++.h>
#define ls(x) x << 1
#define rs(x) x << 1 | 1
#define inf 1e18
#define ll long long
using namespace std;
struct node
{
ll maxx = -1e9 + 7;
ll minn = 1e9 + 7;
ll feifumin = 1e9 + 7;
ll fumax = -1e9 + 7;
};
node ta[500005];
node tb[500005];
ll a[100005];
ll b[100005];
node merge(node x,node y)
{
node ans;
ans.maxx = max(x.maxx,y.maxx);
ans.minn = min(x.minn,y.minn);
ans.feifumin = min(x.feifumin,y.feifumin);
ans.fumax = max(x.fumax,y.fumax);
return ans;
}
void build(node tt[],ll l,ll r,ll id,ll d[])
{
if(l == r)
{
tt[id].maxx = tt[id].minn = d[l];
if(d[l] >= 0) tt[id].feifumin = d[l];
else tt[id].fumax = d[l];
return;
}
ll mid = (l + r) >> 1;
build(tt,l,mid,ls(id),d);
build(tt,mid + 1,r,rs(id),d);
tt[id] = merge(tt[ls(id)],tt[rs(id)]);
}
node sum(node t[],ll ql,ll qr,ll l,ll r,ll id)
{
if(ql <= l && r <= qr) return t[id];
ll mid = (l + r) >> 1;
if(qr <= mid) return sum(t,ql,qr,l,mid,ls(id));
if(ql > mid) return sum(t,ql,qr,mid + 1,r,rs(id));
else
{
node ans,p,q;
p = sum(t,ql,qr,l,mid,ls(id));
q = sum(t,ql,qr,mid + 1,r,rs(id));
ans.maxx = max(p.maxx,q.maxx);
ans.minn = min(p.minn,q.minn);
ans.feifumin = min(p.feifumin,q.feifumin);
ans.fumax = max(p.fumax,q.fumax);
return ans;
}
}
int main()
{
int n,m,q;
scanf("%d%d%d",&n,&m,&q);
for(int i = 1;i <= n;i++) scanf("%lld",&a[i]);
for(int i = 1;i <= m;i++) scanf("%lld",&b[i]);
build(ta,1,n,1,a);
build(tb,1,n,1,b);
ll x1,x2,y1,y2;
while(q--)
{
scanf("%lld%lld%lld%lld",&x1,&y1,&x2,&y2);
node s1 = sum(ta,x1,y1,1,n,1);
node s2 = sum(tb,x2,y2,1,n,1);
ll ans1 = -1e9 + 7,ans2 = -1e9 + 7,ans3 = -1e9 + 7,ans4 = -1e9 + 7;
if(s2.minn >= 0) ans1 = s2.minn * s1.maxx;
else ans2 = s2.minn * s1.feifumin;
if(s2.maxx >= 0) ans3 = s2.maxx * s1.fumax;
else ans4 = s2.maxx * s1.minn;
printf("%lld\n",max(max(ans1,ans2),max(ans3,ans4)));
}
return 0;
}
```
by 王昊岩123 @ 2023-10-07 11:53:26
@[王昊岩123](/user/491741) 字面意思,编译器的输出超限所以没有编译。
问题应该在这里:
```
struct node
{
ll maxx = -1e9 + 7;
ll minn = 1e9 + 7;
ll feifumin = 1e9 + 7;
ll fumax = -1e9 + 7;
};
node ta[500005];
node tb[500005];
```
这个好像是跟 `a[1145141]={0};` 一个问题。
by xx3333333333333 @ 2023-10-07 11:57:20
ll用宏定义的话,scanf里的lld也会被影响
by Rainylower @ 2023-10-07 11:57:37
谢谢谢谢谢谢大佬orz
by 王昊岩123 @ 2023-10-07 11:59:47
@[WaNtEddEtNaW](/user/275079) 不会,谁说的?
by xx3333333333333 @ 2023-10-07 12:15:06
@[WaNtEddEtNaW](/user/275079) 我用一年了咋没事啊
by zhzkiller @ 2023-10-07 12:17:54
@[WaNtEddEtNaW](/user/275079) 字符串没事
by zgy_123 @ 2023-10-07 12:33:42