Submission #1165965

#TimeUsernameProblemLanguageResultExecution timeMemory
1165965aminabouakazPyramids (IOI24_pyramids)C++20
20 / 100
36 ms5032 KiB
#include "pyramids.h"
#include <vector>

std::vector<int> prefixA, prefixB, prefixRemA, prefixRemB;

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

    for (int i = 0; i < N; ++i) {
        prefixA[i + 1] = prefixA[i] + A[i];
        prefixB[i + 1] = prefixB[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 = prefixA[R + 1] - prefixA[L];
    int sumB = prefixB[Y + 1] - prefixB[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...