#include <iostream>
#include <vector>
class PyramidTransform {
public:
PyramidTransform(const std::vector<int>& A, const std::vector<int>& B)
: prefixSumA(A.size() + 1, 0LL), prefixSumB(B.size() + 1, 0LL) {
for (size_t i = 0; i < A.size(); ++i) {
prefixSumA[i + 1] = prefixSumA[i] + A[i];
prefixSumB[i + 1] = prefixSumB[i] + B[i];
}
}
bool canTransform(int L, int R, int X, int Y) {
long long sumA = prefixSumA[R + 1] - prefixSumA[L];
long long sumB = prefixSumB[Y + 1] - prefixSumB[X];
return sumA == sumB;
}
private:
std::vector<long long> prefixSumA;
std::vector<long long> prefixSumB;
};
PyramidTransform* pyramidTransform;
void init(std::vector<int> A, std::vector<int> B) {
pyramidTransform = new PyramidTransform(A, B);
}
bool can_transform(int L, int R, int X, int Y) {
return pyramidTransform->canTransform(L, R, X, Y);
}
# | 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... |