제출 #1165956

#제출 시각아이디문제언어결과실행 시간메모리
1165956aminabouakazPyramids (IOI24_pyramids)C++20
20 / 100
35 ms4936 KiB
#include "pyramids.h"
#include <vector>

std::vector<int> prefixSumA, prefixSumB, prefixRemA, prefixRemB;

void init(std::vector<int> A, std::vector<int> B) {
    int N = A.size();
    prefixSumA.resize(N + 1, 0);
    prefixSumB.resize(N + 1, 0);
    prefixRemA.resize(N + 1, 0);
    prefixRemB.resize(N + 1, 0);

    for (int i = 0; i < N; ++i) {
        prefixSumA[i + 1] = prefixSumA[i] + A[i];
        prefixSumB[i + 1] = prefixSumB[i] + B[i];
        prefixRemA[i + 1] = prefixRemA[i] + (A[i] % 2);
        prefixRemB[i + 1] = prefixRemB[i] + (B[i] % 2);
    }
}

bool can_transform(int L, int R, int X, int Y) {
    int sumA = prefixSumA[R + 1] - prefixSumA[L];
    int sumB = prefixSumB[Y + 1] - prefixSumB[X];
    int remA = prefixRemA[R + 1] - prefixRemA[L];
    int remB = prefixRemB[Y + 1] - prefixRemB[X];

    return sumA == sumB && remA == remB;
}
#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...