#include <stdio.h>
#include <stdlib.h>
// binary_search関数の実装
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; // 値が見つかった場合、そのインデックスを返す
}
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+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vIGJpbmFyeV9zZWFyY2jplqLmlbDjga7lrp/oo4UKaW50IGJpbmFyeV9zZWFyY2goaW50IGFbXSwgaW50IG4sIGludCB4KSB7CiAgICBpbnQgbGVmdCA9IDA7CiAgICBpbnQgcmlnaHQgPSBuIC0gMTsKCiAgICB3aGlsZSAobGVmdCA8PSByaWdodCkgewogICAgICAgIGludCBtaWQgPSBsZWZ0ICsgKHJpZ2h0IC0gbGVmdCkgLyAyOwoKICAgICAgICBpZiAoYVttaWRdID09IHgpIHsKICAgICAgICAgICAgcmV0dXJuIG1pZDsgLy8g5YCk44GM6KaL44Gk44GL44Gj44Gf5aC05ZCI44CB44Gd44Gu44Kk44Oz44OH44OD44Kv44K544KS6L+U44GZCiAgICAgICAgfQogICAgICAgIGlmIChhW21pZF0gPCB4KSB7CiAgICAgICAgICAgIGxlZnQgPSBtaWQgKyAxOyAvLyDmjqLjgZfjgabjgYTjgovlgKTjgYzlj7PlgbTjgavjgYLjgovloLTlkIgKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByaWdodCA9IG1pZCAtIDE7IC8vIOaOouOBl+OBpuOBhOOCi+WApOOBjOW3puWBtOOBq+OBguOCi+WgtOWQiAogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAtMTsgLy8g5YCk44GM6KaL44Gk44GL44KJ44Gq44GE5aC05ZCICn0KCmludCBtYWluKHZvaWQpIHsKICAgIGludCBuLCB4LCBpOwogICAgaW50ICphOwogICAgaW50IGFucyA9IC0xOwoKICAgIHNjYW5mKCIlZCAlZCIsICZuLCAmeCk7CiAgICBhID0gKGludCAqKW1hbGxvYyhzaXplb2YoaW50KSAqIG4pOwogICAgaWYgKGEgPT0gTlVMTCkgewogICAgICAgIHByaW50ZigiRVJST1JcbiIpOwogICAgICAgIHJldHVybiAtMTsKICAgIH0KICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBzY2FuZigiJWQiLCAmYVtpXSk7CiAgICB9CiAgICBhbnMgPSBiaW5hcnlfc2VhcmNoKGEsIG4sIHgpOwogICAgaWYgKGFucyAhPSAtMSkKICAgICAgICBwcmludGYoImFbJWRdID0gJWRcbiIsIGFucywgYVthbnNdKTsKICAgIGVsc2UKICAgICAgICBwcmludGYoIm5vdCBmb3VuZFxuIik7CiAgICBmcmVlKGEpOwogICAgcmV0dXJuIDA7Cn0=