Check if it is possible to move from (0, 0) to (x, y) in N steps

Given a point (x, y). Find whether it is possible or not to move from (0, 0) to (x, y) in exactly n steps. 4 types of steps are valid, you can move from a point (a, b) to either of (a, b+1), (a, b-1), (a-1, b), (a+1, b)

Examples:

Input: x = 0, y = 0, n = 2
Output: POSSIBLE

Input: x = 1, y = 1, n = 3 
Output: IMPOSSIBLE


Approach :

In the shortest path, one can move from (0, 0) to (x, y) in |x| + |y|. So, it is not possible to move from (0, 0) to (x, y) in less than |x| + |y| steps. After reaching one can take two more steps as (x, y) -> (x, y+1) -> (x, y).

So, it is possible if

n >= |x| + |y| and ( n-( |x| + |y| ) ) % 2 = 0.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to check whether it is possible
// or not to move from (0, 0) to (x, y)
// in exactly n steps
#include <bits/stdc++.h>
using namespace std;
  
// Function to check whether it is possible
// or not to move from (0, 0) to (x, y)
// in exactly n steps
bool Arrive(int a, int b, int n)
{
    if (n >= abs(a) + abs(b) and (n - (abs(a) + abs(b))) % 2 == 0)
        return true;
  
    return false;
}
  
// Driver code
int main()
{
    int a = 5, b = 5, n = 11;
  
    if (Arrive(a, b, n))
        cout << "Yes";
    else
        cout << "No";
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to check whether it is possible
// or not to move from (0, 0) to (x, y)
// in exactly n steps
import java.io.*;
  
public class GFG {
  
// Function to check whether it is possible
// or not to move from (0, 0) to (x, y)
// in exactly n steps
static boolean Arrive(int a, int b, int n)
{
    if (n >= Math.abs(a) + Math.abs(b) && (n - (Math.abs(a) + Math.abs(b))) % 2 == 0)
        return true;
  
    return false;
}
  
// Driver code
int main()
{
  
    return 0;
}
  
    public static void main (String[] args) {
          
    int a = 5, b = 5, n = 11;
  
    if (Arrive(a, b, n))
        System.out.println( "Yes");
    else
        System.out.println( "No");
    }
}
//This code is contributed by shs..

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to check whether 
# it is possible or not to move from 
# (0, 0) to (x, y) in exactly n steps 
  
# Function to check whether it is 
# possible or not to move from 
# (0, 0) to (x, y) in exactly n steps 
def Arrive(a, b, n):
      
    if (n >= abs(a) + abs(b) and 
       (n - (abs(a) + abs(b))) % 2 == 0):
        return True
  
    return False
  
# Driver code 
a = 5
b = 5
n = 11
  
if (Arrive(a, b, n)): 
    print("Yes"
else:
    print("No"
  
# This code is contributed
# by Yatin Gupta     

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to check whether 
// it is possible or not to 
// move from (0, 0) to (x, y)
// in exactly n steps
using System;
  
class GFG 
{
  
// Function to check whether it 
// is possible or not to move 
// from (0, 0) to (x, y) in
// exactly n steps
static bool Arrive(int a, int b, int n)
{
    if (n >= Math.Abs(a) + Math.Abs(b) && 
       (n - (Math.Abs(a) + Math.Abs(b))) % 2 == 0)
        return true;
  
    return false;
}
  
// Driver code
public static void Main () 
{
    int a = 5, b = 5, n = 11;
  
    if (Arrive(a, b, n))
        Console.WriteLine( "Yes");
    else
        Console.WriteLine( "No");
    }
}
  
// This code is contributed by shashank

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to check whether 
// it is possible or not to move 
// from (0, 0) to (x, y) in exactly n steps
  
// Function to check whether it 
// is possible or not to move 
// from (0, 0) to (x, y) in exactly n steps
function Arrive($a, $b, $n)
{
    if ($n >= abs($a) + abs($b) and
       ($n - (abs($a) + abs($b))) % 2 == 0)
        return true;
  
    return false;
}
  
// Driver code
$a = 5; $b = 5; $n = 11;
  
if (Arrive($a, $b, $n))
    echo "Yes";
else
    echo "No";
  
// This code is contributed 
// by Akanksha Rai(Abby_akku)

chevron_right


Output:

No


My Personal Notes arrow_drop_up

pawanasipugmailcom

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.