#include <stdio.h>
int binary_search(int a[], int n, int x) {
int left = 0;
int right = n - 1;
int mid;
while (left <= right) {
mid = (left + right) / 2;
if (a[mid] == x) {
return mid; // 見つかった
} else if (a[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 見つからなかった
}
int main() {
int n, x;
int a[100];
// 要素数入力
// 配列入力(昇順で入れること!)
for (int i = 0; i < n; i++) {
}
// 探す値
int ans = binary_search(a, n, x);
if (ans != -1) {
printf("a[%d] = %d\n", ans
, a
[ans
]); } else {
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgYmluYXJ5X3NlYXJjaChpbnQgYVtdLCBpbnQgbiwgaW50IHgpIHsKICAgIGludCBsZWZ0ID0gMDsKICAgIGludCByaWdodCA9IG4gLSAxOwogICAgaW50IG1pZDsKCiAgICB3aGlsZSAobGVmdCA8PSByaWdodCkgewogICAgICAgIG1pZCA9IChsZWZ0ICsgcmlnaHQpIC8gMjsKCiAgICAgICAgaWYgKGFbbWlkXSA9PSB4KSB7CiAgICAgICAgICAgIHJldHVybiBtaWQ7ICAvLyDopovjgaTjgYvjgaPjgZ8KICAgICAgICB9IGVsc2UgaWYgKGFbbWlkXSA8IHgpIHsKICAgICAgICAgICAgbGVmdCA9IG1pZCArIDE7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmlnaHQgPSBtaWQgLSAxOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gLTE7ICAvLyDopovjgaTjgYvjgonjgarjgYvjgaPjgZ8KfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbiwgeDsKICAgIGludCBhWzEwMF07CgogICAgLy8g6KaB57Sg5pWw5YWl5YqbCiAgICBzY2FuZigiJWQiLCAmbik7CgogICAgLy8g6YWN5YiX5YWl5Yqb77yI5piH6aCG44Gn5YWl44KM44KL44GT44Go77yB77yJCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHNjYW5mKCIlZCIsICZhW2ldKTsKICAgIH0KCiAgICAvLyDmjqLjgZnlgKQKICAgIHNjYW5mKCIlZCIsICZ4KTsKCiAgICBpbnQgYW5zID0gYmluYXJ5X3NlYXJjaChhLCBuLCB4KTsKCiAgICBpZiAoYW5zICE9IC0xKSB7CiAgICAgICAgcHJpbnRmKCJhWyVkXSA9ICVkXG4iLCBhbnMsIGFbYW5zXSk7CiAgICB9IGVsc2UgewogICAgICAgIHByaW50Zigibm90IGZvdW5kXG4iKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==