In this

**HackerEarth Fixed parities, problem-solution**Alice and Bob are playing a board game. They have n x n boards and two arrays a and b of length n. The value of each cell in the ith row and jth row is a[i] + b[j]. Alice asks q questions, Bob. In each question, Alice provides two cells A and B. She asks the following questions to Bob:Are there any paths from A to B that contain the same parity as A and B?

## HackerEarth Fixed parities problem solution.

`#include <bits/stdc++.h>`

using namespace std;

const int maxn = 1e5 + 12;

int r[maxn], c[maxn];

int d[2][maxn];

int main(){

int n, q, r1, c1, r2, c2;

cin >> n;

for(int i = 0; i < n; i++)

cin >> r[i];

for(int i = 0; i < n; i++)

cin >> c[i];

cin >> q;

for(int i = 1; i < n; i++){

d[0][i] = d[0][i - 1];

d[1][i] = d[1][i - 1];

if(abs(r[i] - r[i - 1]) % 2 == 1)

d[0][i]++;

if(abs(c[i] - c[i - 1]) % 2 == 1)

d[1][i]++;

}

while(q--){

cin >> r1 >> c1 >> r2 >> c2;

r1--, c1--, r2--, c2--;

if(abs((r[r1] + c[c1]) - (r[r2] + c[c2])) % 2 == 1){

cout << "NO\n";

continue;

}

if(abs((d[0][r1] - d[0][r2]) - (d[1][c1] - d[1][c2])) % 2 == 0)

cout << "YES\n";

else

cout << "NO\n";

}

}

## 0 Comments