Open In App

Check if players can meet on the same cell of the matrix in odd number of operations

Improve
Improve
Like Article
Like
Save
Share
Report

Given four integers X, Y, A, and B. X and Y denotes the rows and the columns of a matrix such that (X, Y ? 2). Check if both the players can meet on the same cell of the matrix in an exactly odd number of operations by following the given conditions:

  • Player 1 is at the top left corner of the matrix initially.
  • Player 2 is at the bottom right of the matrix initially.
  • In one operation, Player 1 can make exactly A steps, or Player 2 can make exactly B steps. In one step a player can move only left, right, up, or down cell from the current cell. 

Examples:

Input: X = 2, Y = 2, A = 2, B = 1 
Output: YES
Explanation: Operations are as follows:

  • Operation 1: Player 1 can make exactly 2 steps and initially at the top left corner(1, 1). The sequence of two steps is as: (1, 1) -> (1, 2) -> (2, 2). Player 2 is initially present at the bottom right corner(N.M) = (2, 2). It can be verified that both players are present at (2, 2) now. The number of operations is 1, Which is exactly odd. Therefore, the output is YES.

Input: X = 2, Y = 2, A = 1, B = 2
Output: YES
Explanation: Operations are as follows:

  • Operation 1: Player 1 moves to the right cell from the current position, Formally (1, 1) -> (1, 2).
  • Operation 2: Player 2, First moves to the left cell from the current position(2, 2) and then right side to one step, (2, 2) -> (2, 1) -> (2, 2). Formally, returns to its initial position.    
  • Operation 3: Player 1 is at currently (1, 2), Makes one step downwards from (1, 2) to (2, 2). It can be verified that now both the player are at (2, 2) in 3 operations, Which is odd. Therefore, the output is YES.

Input: X = 2, Y = 2, A = 1, B = 1
Output: NO
Explanation: It can be verified that it is not possible to meet on the same cell in an exactly odd number of operations. Hence the output is NO

Approach: Implement the idea below to solve the problem:

The problem is observation based and can be solved by using Mathematical concepts.

Steps were taken to solve the problem:

  • Increment X by Y – 2 + A, Formally X+=Y-2+A.
  • Increment A by B, Formally A += B.
  • If (X % 2 == 1 && A % 2 == 0) then output YES else NO.

Below is the code to implement the above approach:

C++




// C++ code to implement the approach
#include <bits/stdc++.h>
using namespace std;
 
// Method for output the answer
void Is_Possible_to_meet(int X, int Y, int A, int B)
{
     // Implementing idea for output the answer
     X += Y - 2 + A;
     A += B;
     cout<< (X % 2 == 1 && A % 2 == 0 ? "NO" : "YES") << endl;
}
 
int main() {
 
     // Input value of X and Y
     int X = 2, Y = 2;
 
     // Input value of A and B
     int A = 2, B = 1;
 
     // Function call
     Is_Possible_to_meet(X, Y, A, B);
}


Java




// Java code to implement the approach
import java.util.*;
class GFG {
 
    // Driver Function
    public static void main(String[] args)
    {
 
        // Input value of X and Y
        int X = 2, Y = 2;
 
        // Input value of A and B
        int A = 2, B = 1;
 
        // Function call
        Is_Possible_to_meet(X, Y, A, B);
    }
 
    // Method for output the answer
    static void Is_Possible_to_meet(int X, int Y, int A,
                                    int B)
    {
 
        // Implementing idea for output
        // the answer
        X += Y - 2 + A;
        A += B;
        System.out.println(
            X % 2 == 1 && A % 2 == 0 ? "NO" : "YES");
    }
}


C#




// C# code to implement the approach
using System;
 
public class GFG{
 
    // Method for output the answer
    static void Is_Possible_to_meet(int X, int Y, int A,
                                    int B)
    {
 
        // Implementing idea for output
        // the answer
        X += Y - 2 + A;
        A += B;
       Console.Write(
            X % 2 == 1 && A % 2 == 0 ? "NO" : "YES");
    }
 
    // Driver Function
    static public void Main (){
     
         // Input value of X and Y
        int X = 2, Y = 2;
 
        // Input value of A and B
        int A = 2, B = 1;
 
        // Function call
        Is_Possible_to_meet(X, Y, A, B);
    }
}


Javascript




// JS code to implement the approach
 
// Method for output the answer
function Is_Possible_to_meet( X, Y, A, B)
{
     // Implementing idea for output the answer
     X += Y - 2 + A;
     A += B;
     console.log(X % 2 == 1 && A % 2 == 0 ? "NO" : "YES");
}
 
// Input value of X and Y
let X = 2, Y = 2;
 
// Input value of A and B
let A = 2, B = 1;
 
// Function call
Is_Possible_to_meet(X, Y, A, B);
 
// this code is contributed by poojaagarwal2.


Python3




def Is_Possible_to_meet(X, Y, A, B):
    # Implementing idea for output the answer
    X += Y - 2 + A
    A += B
    print("NO" if X % 2 == 1 and A % 2 == 0 else "YES")
 
# Main function
if __name__ == '__main__':
    # Input value of X and Y
    X, Y = 2, 2
 
    # Input value of A and B
    A, B = 2, 1
 
    # Function call
    Is_Possible_to_meet(X, Y, A, B)


Output

YES

Time Complexity: O(1)
Auxiliary Space: O(1)



Last Updated : 24 Feb, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads