#include <vector>
using namespace std;
vector<int> pyramidsA, pyramidsB;
vector<int> sumA, sumB;
void init(vector<int> A, vector<int> B) {
pyramidsA = A;
pyramidsB = B;
sumA = A;
sumB = B;
for (int i = 1; i < A.size(); ++i) {
sumA[i] += sumA[i - 1];
sumB[i] += sumB[i - 1];
}
}
bool can_transform(int L, int R, int X, int Y) {
if (sumA[R] - (L > 0 ? sumA[L - 1] : 0) !=
sumB[Y] - (X > 0 ? sumB[X - 1] : 0)) {
return false;
}
int diffA = 0, diffB = 0;
for (int i = 0; i <= R - L; ++i) {
diffA += pyramidsA[L + i] - (L + i > L ? pyramidsA[L + i - 1] : 0);
diffB += pyramidsB[X + i] - (X + i > X ? pyramidsB[X + i - 1] : 0);
if (diffA != diffB) {
return false;
}
}
return true;
}
# | 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... |