1378.寻书之旅2
时间限制: 1000 MS 内存限制: 65536 K
提交数: 379 (0 users) 通过数: 281 (274 users)
问题描述
看完一本书之后,小华决定再去借一本书!同样的,他事先查询好了自己想要的书的索书号并找到了对的书架。不过他发现这次书籍是有经过整理的,索书号是按照非递减的顺序从左至右的摆放的。现在小明要从这摆放的L本书中找到他要的那本书,同样存在书籍不在书架上的可能!
输入格式
第一行输入书籍数量L和小华所要找的书的索书号k, 0<L、k<100000
第二行输入L个整数ai,0<ai<100000,每一个正数ai代表一本书的索书号。
数据保证没有重复索书号。
输出格式
输出小华所要找的书在书架上的放书位编号,若不在书架上,则输出“Error!”(注意:不要输出引号)
样例输入
6 9
1 3 5 6 9 10
样例输出
5
来源
时间限制: 1000 MS 内存限制: 65536 K
提交数: 379 (0 users) 通过数: 281 (274 users)
问题描述
看完一本书之后,小华决定再去借一本书!同样的,他事先查询好了自己想要的书的索书号并找到了对的书架。不过他发现这次书籍是有经过整理的,索书号是按照非递减的顺序从左至右的摆放的。现在小明要从这摆放的L本书中找到他要的那本书,同样存在书籍不在书架上的可能!
输入格式
第一行输入书籍数量L和小华所要找的书的索书号k, 0<L、k<100000
第二行输入L个整数ai,0<ai<100000,每一个正数ai代表一本书的索书号。
数据保证没有重复索书号。
输出格式
输出小华所要找的书在书架上的放书位编号,若不在书架上,则输出“Error!”(注意:不要输出引号)
样例输入
6 9
1 3 5 6 9 10
样例输出
5
来源
xmu
#include <stdio.h>
int main()
{
int L, k;
int a[100005] = { 0 };
int is_found;
int i, j, mid;
scanf("%d %d", &L, &k);
for (i = 1; i <= L; ++i)
scanf("%d", &a[i]);
is_found = 0;
i = 1;
j = L;
mid = 0;
while (i <= j)
{
mid = (i + j) / 2;
if (a[mid] == k)
{
is_found = 1;
break;
}
else if (a[mid] < k)
i = mid + 1;
else
j = mid - 1;
}
if (is_found)
printf("%d\n", mid);
else
printf("Error!\n");
return 0;
}