# Minimum time to reach a point with +t and -t moves at time t

• Difficulty Level : Easy
• Last Updated : 31 Jul, 2022

Given a positive coordinate ‘X’ and you are at coordinate ‘0’, the task is to find the minimum time required to get to coordinate ‘X’ with the following move :
At time ‘t’, you can either stay at the same position or take a jump of length exactly ‘t’ either to the left or to the right. In other words, you can be at coordinate ‘x – t’, ‘x’ or ‘x + t’ at time ‘t’ where ‘x’ is the current position.
Examples:

```Input: 6
Output: 3
At time 1, jump from x = 0 to x = 1 (x = x + 1)
At time 2, jump from x = 1 to x = 3 (x = x + 2)
At time 3, jump from x = 3 to x = 6 (x = x + 3)
So, minimum required time is 3.

Input: 9
Output: 4
At time 1, do not jump i.e x = 0
At time 2, jump from x = 0 to x = 2 (x = x + 2)
At time 3, jump from x = 2 to x = 5 (x = x + 3)
At time 4, jump from x = 5 to x = 9 (x = x + 4)
So, minimum required time is 4.```

Approach: The following greedy strategy works:
We just find the minimum ‘t’ such that 1 + 2 + 3 + … + t >= X.

• If (t * (t + 1)) / 2 = X then answer is ‘t’.
• Else if (t * (t + 1)) / 2 > X, then we find (t * (t + 1)) / 2 – X and remove this number from the sequence [1, 2, 3, …, t]. The resulting sequence sums up to ‘X’.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the above approach` `#include ` `using` `namespace` `std;` `   ``// returns the minimum time``    ``// required to reach 'X'``    ``long` `cal_minimum_time(``long` `X)``    ``{` `        ``// Stores the minimum time``        ``long` `t = 0;``        ``long` `sum = 0;` `        ``while` `(sum < X) {` `            ``// increment 't' by 1``            ``t++;` `            ``// update the sum``            ``sum = sum + t;``        ``}` `        ``return` `t;``    ``}` `// Driver code``int` `main()``{``        ``long` `n = 6;``        ``long` `ans = cal_minimum_time(n);``        ``cout << ``"The minimum time required is : "` `<< ans ;` `   ``return` `0;``   ` `   ``// This code is contributed by ANKITRAI1``}`

## Java

 `// Java implementation of the above approach``class` `GFG {` `    ``// returns the minimum time``    ``// required to reach 'X'``    ``static` `long` `cal_minimum_time(``long` `X)``    ``{` `        ``// Stores the minimum time``        ``long` `t = ``0``;``        ``long` `sum = ``0``;` `        ``while` `(sum < X) {` `            ``// increment 't' by 1``            ``t++;` `            ``// update the sum``            ``sum = sum + t;``        ``}` `        ``return` `t;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``long` `n = ``6``;``        ``long` `ans = cal_minimum_time(n);``        ``System.out.println(``"The minimum time required is : "` `+ ans);``    ``}``}`

## Python3

 `# Python 3 implementation of the``# above approach` `# returns the minimum time``# required to reach 'X'``def` `cal_minimum_time(X):` `    ``# Stores the minimum time``    ``t ``=` `0``    ``sum` `=` `0` `    ``while` `(``sum` `< X):``        ` `        ``# increment 't' by 1``        ``t ``=` `t ``+` `1``        ` `        ``# update the sum``        ``sum` `=` `sum` `+` `t;``    ` `    ``return` `t;` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ``n ``=` `6``    ``ans ``=` `cal_minimum_time(n)``    ``print``(``"The minimum time required is :"``, ans)``    ` `# This code is contributed By``# Surendra_Gangwar`

## C#

 `// C#  implementation of the above approach``using` `System;` `public` `class` `GFG{``    ` `    ``// returns the minimum time``    ``// required to reach 'X'``    ``static` `long` `cal_minimum_time(``long` `X)``    ``{` `        ``// Stores the minimum time``        ``long` `t = 0;``        ``long` `sum = 0;` `        ``while` `(sum < X) {` `            ``// increment 't' by 1``            ``t++;` `            ``// update the sum``            ``sum = sum + t;``        ``}` `        ``return` `t;``    ``}` `    ``// Driver code``    ``static` `public` `void` `Main (){``        ``long` `n = 6;``        ``long` `ans = cal_minimum_time(n);``        ``Console.WriteLine(``"The minimum time required is : "` `+ ans);``    ``}``}`

## PHP

 ``

## Javascript

 ``

Output:

`The minimum time required is : 3`

Time Complexity: O(n)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up