#include <stdio.h>
#include <stdlib.h>
int binary_search(int a[], int n, int x) {
int left = 0;
int right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (a[mid] == x) {
return mid;
} else if (a[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main(void) {
int n, x, i;
int *a;
int ans = -1;
a
= (int*)malloc(sizeof(int) * n
); if (a == NULL) {
return -1;
}
for (i = 0; i < n; i++) {
}
ans = binary_search(a, n, x);
if (ans != -1) {
printf("a[%d] = %d\n", ans
, a
[ans
]); } else {
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBiaW5hcnlfc2VhcmNoKGludCBhW10sIGludCBuLCBpbnQgeCkgewogICAgaW50IGxlZnQgPSAwOwogICAgaW50IHJpZ2h0ID0gbiAtIDE7CgogICAgd2hpbGUgKGxlZnQgPD0gcmlnaHQpIHsKICAgICAgICBpbnQgbWlkID0gbGVmdCArIChyaWdodCAtIGxlZnQpIC8gMjsKCiAgICAgICAgaWYgKGFbbWlkXSA9PSB4KSB7CiAgICAgICAgICAgIHJldHVybiBtaWQ7CiAgICAgICAgfSBlbHNlIGlmIChhW21pZF0gPCB4KSB7CiAgICAgICAgICAgIGxlZnQgPSBtaWQgKyAxOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJpZ2h0ID0gbWlkIC0gMTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIC0xOwp9CgppbnQgbWFpbih2b2lkKSB7CiAgICBpbnQgbiwgeCwgaTsKICAgIGludCAqYTsKICAgIGludCBhbnMgPSAtMTsKICAgIHNjYW5mKCIlZCAlZCIsICZuLCAmeCk7CiAgICBhID0gKGludCopbWFsbG9jKHNpemVvZihpbnQpICogbik7CiAgICBpZiAoYSA9PSBOVUxMKSB7CiAgICAgICAgcHJpbnRmKCJFUlJPUlxuIik7CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHNjYW5mKCIlZCIsICZhW2ldKTsKICAgIH0KICAgIGFucyA9IGJpbmFyeV9zZWFyY2goYSwgbiwgeCk7CiAgICBpZiAoYW5zICE9IC0xKSB7CiAgICAgICAgcHJpbnRmKCJhWyVkXSA9ICVkXG4iLCBhbnMsIGFbYW5zXSk7CiAgICB9IGVsc2UgewogICAgICAgIHByaW50Zigibm90IGZvdW5kXG4iKTsKICAgIH0KICAgIGZyZWUoYSk7CiAgICByZXR1cm4gMDsKfQ==