#include <stdio.h>
#include <stdlib.h>
int binary_search(int a[],int n,int x){
int lef,mid,rig;
lef=0;rig=n-1;
mid=(lef+rig)/2;
while(1){
printf("%d=mid%d=lef%d=rig\n",mid
,lef
,rig
); if(a[mid] == x){
return mid;
}
else if(a[mid]<x){
lef = mid+1;
mid=(lef+rig)/2;
}
else if(a[mid]>x){
rig = mid-1;
mid=(lef+rig)/2;
}
if(lef>rig)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
]); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBiaW5hcnlfc2VhcmNoKGludCBhW10saW50IG4saW50IHgpewoJaW50IGxlZixtaWQscmlnOwoJbGVmPTA7cmlnPW4tMTsKCW1pZD0obGVmK3JpZykvMjsKCXdoaWxlKDEpewoJCXByaW50ZigiJWQ9bWlkJWQ9bGVmJWQ9cmlnXG4iLG1pZCxsZWYscmlnKTsKCQlpZihhW21pZF0gPT0geCl7CgkJCXJldHVybiBtaWQ7CgkJfQoJCWVsc2UgaWYoYVttaWRdPHgpewoJCQkKCQkJbGVmID0gbWlkKzE7CgkJCW1pZD0obGVmK3JpZykvMjsKCQl9CgkJZWxzZSBpZihhW21pZF0+eCl7CgkJCXJpZyA9IG1pZC0xOwoJCQltaWQ9KGxlZityaWcpLzI7CgkJfQoJCWlmKGxlZj5yaWcpcmV0dXJuIC0xOwoJfQoJCgkKCQp9CgppbnQgbWFpbih2b2lkKSB7CglpbnQgbix4LGk7CglpbnQgKmE7CglpbnQgYW5zID0gLTE7CglzY2FuZigiJWQgJWQiLCZuLCZ4KTsKCWEgPSAoaW50KiltYWxsb2Moc2l6ZW9mKGludCkqbik7CglpZihhPT1OVUxMKXsKCQlwcmludGYoIkVSUk9SXG4iKTsKCQlyZXR1cm4gLTE7Cgl9Cglmb3IoaT0wO2k8bjtpKyspewoJCXNjYW5mKCIlZCIsJmFbaV0pOwoJfQoJYW5zID0gYmluYXJ5X3NlYXJjaChhLG4seCk7CglpZihhbnMgIT0gLTEpIHByaW50ZigiYVslZF0gPSAlZFxuIixhbnMsYVthbnNdKTsKCWVsc2UgcHJpbnRmKCJub3QgZm91bmRcbiIpOwoJZnJlZShhKTsKCXJldHVybiAwOwp9Cg==