#include <iostream>
#include <vector>
class PyramidTransform {
std::vector<long long> prefixSumA;
std::vector<long long> prefixSumB;
public:
PyramidTransform(const std::vector<int>& a, const std::vector<int>& b) {
prefixSumA.resize(a.size() + 1, 0LL);
prefixSumB.resize(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;
}
};
PyramidTransform* pTransform;
void init(std::vector<int> a, std::vector<int> b) {
pTransform = new PyramidTransform(a, b);
}
bool can_transform(int l, int r, int x, int y) {
return pTransform->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... |