bool solved() {
    unsigned total_count = 0;

    for(unsigned i = 0; i < N; i++) {
        unsigned row_count = 0;
        for(unsigned j = 0; j < N; j++) {
            if(squares[i][j]) {
                row_count++;
            }
        }

        total_count += row_count;

        if(row_count != 1) {
            return false;
        }
    }

    if(total_count != N) {
        return false;
    }

    for(unsigned j = 0; j < N; j++) {
        unsigned column_count = 0;
        for(unsigned i = 0; i < N; i++) {
            if(squares[i][j]) {
                column_count++;
            }
        }

        if(column_count != 1) {
            return false;
        }
    }

    for(unsigned i = 0; i < N; i++) {
        ...
    }

    return true;
}
