Header Ad

HackerEarth Fixed parities problem solution

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


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";
}
}


Post a Comment

0 Comments