You can use binary search to efficiently guess the number I picked. Start by guessing the middle number between 1 and n. Depending on the response, you can eliminate half of the remaining numbers and guess again in the middle of the remaining range. Repeat this process until you correctly guess the number or until the remaining range becomes empty. Here's an example implementation:

```
int guessNumber(int n) {
    int left = 1, right = n;
    while (left <= right) {
        int mid = left + (right - left) / 2;
        int res = guess(mid);
        if (res == 0) {
            return mid;
        } else if (res == 1) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    return -1; // Error: not found
}
```
Stiamo giocando al gioco delle ipotesi. Il gioco è il seguente: scelgo un numero da 1 a n. Devi indovinare quale numero ho scelto. Ogni volta che indovinerai male, ti dirò se il numero che ho scelto è più alto o più basso della tua ipotesi. Chiami un'API predefinita int guess(int num), che restituisce tre possibili risultati: -1: la tua ipotesi è maggiore del numero che ho scelto (cioè num &gt; pick). 1: La tua ipotesi è inferiore al numero che ho scelto (cioè num &lt; pick). 0: la tua ipotesi è uguale al numero che ho scelto (cioè num == pick). Restituisci il numero che ho scelto.