/* The guess API is defined in the parent class GuessGame.
   @param num, your guess
   @return -1 if my number is lower, 1 if my number is higher, otherwise return 0
      int guess(int num); */

public class Solution extends GuessGame {
    public int guessNumber(int n) {
                if (n < 2) {
            return n;
        }
        
        // core logic
        int start = 1;
        int end = n;
        while(start + 1 < end) {
            int mid = (end - start) / 2 + start;
            int tmpResult = guess(mid);
            if (tmpResult == -1) {
                end = mid;
            } else if (tmpResult == 1) {
                start = mid;
            } else {
                return mid;
            }
        }
        
        if (guess(start) == 0) {
            return start;
        } else {
            return end;
        }
    }
}