#include "pyramids.h"
#include <vector>
std::vector<int> prefixSumA, prefixSumB, prefixRemA, prefixRemB;
void init(std::vector<int> A, std::vector<int> B) {
int N = A.size();
prefixSumA.resize(N + 1, 0);
prefixSumB.resize(N + 1, 0);
prefixRemA.resize(N + 1, 0);
prefixRemB.resize(N + 1, 0);
for (int i = 0; i < N; ++i) {
prefixSumA[i + 1] = prefixSumA[i] + A[i];
prefixSumB[i + 1] = prefixSumB[i] + B[i];
prefixRemA[i + 1] = prefixRemA[i] + (A[i] % 2);
prefixRemB[i + 1] = prefixRemB[i] + (B[i] % 2);
}
}
bool can_transform(int L, int R, int X, int Y) {
int sumA = prefixSumA[R + 1] - prefixSumA[L];
int sumB = prefixSumB[Y + 1] - prefixSumB[X];
int remA = prefixRemA[R + 1] - prefixRemA[L];
int remB = prefixRemB[Y + 1] - prefixRemB[X];
return sumA == sumB && remA == remB;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |