1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
extern "C" { bool isBadVersion(int version); int firstBadVersion(int n) { int lower = 1, upper = n, mid; while (lower < upper) { mid = lower + (upper - lower) / 2; if (!isBadVersion(mid)) lower = mid + 1; else upper = mid; } return lower; } }