社区讨论
为何该代码提交CE?
灌水区参与者 2已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @lo7o5lii
- 此快照首次捕获于
- 2023/10/27 05:00 2 年前
- 此快照最后确认于
- 2023/10/27 05:00 2 年前
CPP
#include <bits/stdc++.h>
#define int long long
#define inf 2000000000000000000
using namespace std;
inline int read(){
int x = 0, f = 1;
char ch = getchar();
while(!isdigit(ch)){
if(ch == '-') f = -1;
ch = getchar();
}
while(isdigit(ch)){
x = x * 10 + ch - '0';
ch = getchar();
}
return x * f;
}
const int N = 1e5 + 100;
struct node {
int mxd = -inf, mxu = -inf, mid = inf, miu = inf;
}Tree[N << 2];
int n, m, q, a[N], b[N];
inline void pushup(node &root, node l, node r){
root.mxd = max(l.mxd, r.mxd);
root.mxu = max(l.mxu, r.mxu);
root.mid = min(l.mid, r.mid);
root.miu = min(l.miu, r.miu);
return;
}
void build(int p, int l, int r){
if(l == r) {
if(b[l] >= 0) Tree[p] = (node){-inf, b[l], inf, b[l]};
else Tree[p] = {b[l], -inf, b[l], inf};
return;
}
int mid = l + r >> 1;
build(p << 1, l, mid), build(p << 1 | 1, mid + 1, r);
pushup(Tree[p], Tree[p << 1], Tree[p << 1 | 1]);
return;
}
node query(int p, int l, int r, int L, int R){
if(r < L || R < l) return (node){-inf, -inf, inf, inf};
if(L <= l && r <= R) return Tree[p];
node t;
int mid = l + r >> 1;
pushup(t, query(p << 1, l, mid, L, R), query(p << 1 | 1, mid + 1, r, L, R));
return t;
}
signed main(){
// freopen("game.in", "r", stdin);
// freopen("game.out", "w", stdout);
n = read(), m = read(), q = read();
for(int i = 1; i <= n; ++i) a[i] = read();
for(int i = 1; i <= m; ++i) b[i] = read();
build(1, 1, n);
while(q--){
int l1, r1, l2, r2, ans = -inf;
l1 = read(), r1 = read(), l2 = read(), r2 = read();
for(int i = l1; i <= r1; ++i){
node t = query(1, 1, n, l2, r2);
int tmp = inf;
if(t.mxd != -inf) tmp = min(tmp, a[i] * t.mxd);
if(t.mxu != -inf) tmp = min(tmp, a[i] * t.mxu);
if(t.miu != inf) tmp = min(tmp, a[i] * t.miu);
if(t.mid != inf) tmp = min(tmp, a[i] * t.mid);
ans = max(ans, tmp);
}
printf("%lld\n", ans);
}
return 0;
}
回复
共 7 条回复,欢迎继续交流。
正在加载回复...