什么东西

P8818 [CSP-S 2022] 策略游戏

急,在线等 ``` #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


|