Submission #1166457

#TimeUsernameProblemLanguageResultExecution timeMemory
1166457aminabouakazPyramids (IOI24_pyramids)C++20
100 / 100
38 ms5036 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...