原题:SYGZ OJ 查找给定的K
#include <iostream>
#include <algorithm>
using namespace std;
int n;
int a[500010];
int binary_search(int k)
{
int l=1,r=n;
while (l<r)
{
int mid=l+r>>1;
if (a[mid]==k)
{
r=mid;
}
else
{
l=mid+1;
}
}
return l;
}
int main()
{
int k;
scanf("%d%d",&n,&k);
for (int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
int b=binary_search(k);
if (a[b]==k)
{
printf("%d %d",b,a[b]);
}
else
{
printf("-1");
}
return 0;
}
结果:
WA *1