| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1311504 | jahirsha101 | Pyramids (IOI24_pyramids) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
int N, Q;
vector<int> A, B;
vector<long long> prefA, prefB;
void init(std::vector<int> a, std::vector<int> b) {
N = (int)a.size();
A = std::move(a);
B = std::move(b);
prefA.assign(N+1,0);
prefB.assign(N+1,0);
for (int i=0; i<N;i++) {prefA[i+1] = prefA[i] + A[i]; prefB[i+1] = prefB[i] + B[i]; }
}
bool can_transform(int L, int R, int X, int Y) {
long long sA = prefA[R+1] - prefA[L];
long long sB = prefB[Y+1] - prefB[X];
return sA == sB;
}
int main() {
int n,q;
if (scanf("%d %d", &n, &q) != 2) return 0;
vector<int> a(n), b(n);
for (int i = 0; i < n; i++) scanf("%d", &a[i]);
for (int i = 0; i < n; i++) scanf("%d", &b[i]);
vector<int> L(q), R(q), X(q), Y(q);
for (int i = 0; i < q; i++) scanf("%d%d%d%d", &L[i], &R[i], &X[i], &Y[i]);
init(a, b);
for (int i = 0; i < q; i++) printf("%d\n", (can_transform(L[i], R[i], X[i], Y[i]) ? 1 : 0));
return 0;
}
