Mixed-integer bilinear programming problems