#include <stdio.h>
#include <stdlib.h>
//この関数を実装する
int binary_search(int a[],int n,int x){
//この関数の内側だけを書く
int lef,rig,mid;
lef=a[0];
rig=a[n-1];
mid=(lef+rig)/2;
for(int i=0;i<n;i++){
if(x>mid){
lef=mid+1;
mid=(lef+rig)/2;
}else if(x<mid){
rig=mid-1;
mid=(lef+rig)/2;
}else if(mid==x){
break;
}else if(lef>rig){
return -1;
}
}
for(int i=0;i<n;i++){
if(a[i]==mid){
return i;
}
}
}
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
]); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KIAovL+OBk+OBrumWouaVsOOCkuWun+ijheOBmeOCiwppbnQgYmluYXJ5X3NlYXJjaChpbnQgYVtdLGludCBuLGludCB4KXsKCS8v44GT44Gu6Zai5pWw44Gu5YaF5YG044Gg44GR44KS5pu444GPCglpbnQgbGVmLHJpZyxtaWQ7CglsZWY9YVswXTsKCXJpZz1hW24tMV07CgltaWQ9KGxlZityaWcpLzI7Cglmb3IoaW50IGk9MDtpPG47aSsrKXsKCQlpZih4Pm1pZCl7CgkJCWxlZj1taWQrMTsKCQkJbWlkPShsZWYrcmlnKS8yOwoJCX1lbHNlIGlmKHg8bWlkKXsKCQkJcmlnPW1pZC0xOwoJCQltaWQ9KGxlZityaWcpLzI7CgkJfWVsc2UgaWYobWlkPT14KXsKCQkJYnJlYWs7CgkJfWVsc2UgaWYobGVmPnJpZyl7CgkJCXJldHVybiAtMTsKCQl9Cgl9Cglmb3IoaW50IGk9MDtpPG47aSsrKXsKCQlpZihhW2ldPT1taWQpewoJCQlyZXR1cm4gaTsKCQl9Cgl9Cn0KIAppbnQgbWFpbih2b2lkKSB7CglpbnQgbix4LGk7CglpbnQgKmE7CglpbnQgYW5zID0gLTE7CglzY2FuZigiJWQgJWQiLCZuLCZ4KTsKCWEgPSAoaW50KiltYWxsb2Moc2l6ZW9mKGludCkqbik7CglpZihhPT1OVUxMKXsKCQlwcmludGYoIkVSUk9SXG4iKTsKCQlyZXR1cm4gLTE7Cgl9Cglmb3IoaT0wO2k8bjtpKyspewoJCXNjYW5mKCIlZCIsJmFbaV0pOwoJfQoJYW5zID0gYmluYXJ5X3NlYXJjaChhLG4seCk7CglpZihhbnMgIT0gLTEpIHByaW50ZigiYVslZF0gPSAlZFxuIixhbnMsYVthbnNdKTsKCWVsc2UgcHJpbnRmKCJub3QgZm91bmRcbiIpOwoJZnJlZShhKTsKCXJldHVybiAwOwp9