Problem:
Score : 200 points

Problem Statement

There is a kangaroo at coordinate 0 on an infinite number line that runs from left to right, at time 0.
During the period between time i-1 and time i, the kangaroo can either stay at his position, or perform a jump of length exactly i to the left or to the right.
That is, if his coordinate at time i-1 is x, he can be at coordinate x-i, x or x+i at time i.
The kangaroo's nest is at coordinate X, and he wants to travel to coordinate X as fast as possible.
Find the earliest possible time to reach coordinate X.

Constraints

X is an integer.

1≤X≤10^9

Input

The input is given from Standard Input in the following format:

X

Output

Print the earliest possible time for the kangaroo to reach coordinate X.

Sample Input 1

6

Sample Output 1

3

The kangaroo can reach his nest at time 3 by jumping to the right three times, which is the earliest possible time.

Sample Input 2

2

Sample Output 2

2

He can reach his nest at time 2 by staying at his position during the first second, and jumping to the right at the next second.

Sample Input 3

11

Sample Output 3

5

Solution in Java8 (OpenJDK 1.8.0) (judge verdict: Memory Limit Exceeded)

import java.util.*;
public class Main{

	public static int x;
	public static int min = 1000000001;

	public static void main(String args[]){
		Scanner scan = new Scanner(System.in);
		x = scan.nextInt();
		cal(0,0);
		System.out.println(min);
	}

	public static void cal(int s,int d){
		
		//合致
		if(x==d){
			if(s<min){
			min = s;
			return;
		}
		}

		//枝切り
		if(x<=s){return;}
		
		for(int i=0; i<2; i++){
		//左下チェック
			if(i==0){
		s++;
		cal(s,d);
		s--;}
			if(i==1){
		//右下チェック
		s++;
		d+=s;
		cal(s,d);
		d-=s;
		s--;}
		}
	}
}