제출 #1166459

#제출 시각아이디문제언어결과실행 시간메모리
1166459aminabouakazPyramids (IOI24_pyramids)C++20
100 / 100
44 ms5044 KiB
#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 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...