AOJ 0188 Search
こんにちは川です。
問題文に書いてあると通りにしたら解けます。
気を付けるとしたら max と minの関係が崩れた時にループをやめることですかね。
実際にやってみるとわかります。
#include<bits/stdc++.h>
using
namespace
std;
int
main()
{
int
n;
while
(cin>>n,n){
int
num[n],ans;
for
(
int
i=0;i<n;i++)cin>>num[i];
cin>>ans;
int
serch,kawa[2]={0,n-1};
for
(
int
i=1;kawa[1]>=kawa[0];i++){
serch=(kawa[0]+kawa[1])/2;
if
(num[serch]>ans)kawa[1]=serch-1;
else
if
(num[serch]<ans)kawa[0]=serch+1;
if
(num[serch]==ans||kawa[0]>kawa[1]){
cout<<i<<endl;
break
;
}
}
}
}