Porcellino: discrepanza fra grader locale e online

Ho fatto una soluzione per il problema porcellino.
Per chi non lo conoscesse, e’ provveduto un grader locale che chiama il tuo programma e ti dice “si hai fatto giusto” o “no hai sbagliato”.
Il primo subtask del problema chiede di risolverlo per N <= 100 e, in locale, ho testato tutti questi casi e vengono tutti giusti.
Tuttavia, una volta submittato, non fa neanche un caso: ci dev’essere quindi un problema con l’I/O o qualcosa del genere. Tuttavia, avendo usato il grader originale, non so veramente che pesci pigliare! Quindi chiedo aiuto a voi :).
Allego il mio codice:

#include <stdbool.h>
#include <iostream>

using namespace std;

bool chiedi(int X);

int indovina() {
    uint q = 0xFFFFFFFF;
    uint ans = 0;
    uint d = 1;
    chiedi(q);
    q <<= 1;
    for (int i = 1; i < 32; i++) {
        if (!chiedi(q)) ans += d;
        d <<= 1;
        q <<= 1;
    }
    return ans;
}

Grazie mille in anticipo tutti.

Dovrebbe essere solo una questione di types, la variabile q è dichiarata unsigned (uint) con valaore 0xFFFFFFFF che equivale a 4294967295 e viene passato alla funzione chiedi(X) con X integer che in c++ ha come limite INT_MAX = 2147483647.