小金的询问
Time Limit: 1000MS Memory limit: 65536K
题目描述
给定一个有序(升序)数字数组A,查找数字target,若target在数组中出现,返回位置,若不存在,返回它应该插入的位置
输入
多组输入。
每组输入第一行输入两个整数n,m,分别代表数组长度和询问次数;
第二行输入n个整数,为数字A的所以元素,数据保证没有重复元素;
接下来的m行,每行一个正整数表示询问的target。
每组输入第一行输入两个整数n,m,分别代表数组长度和询问次数;
第二行输入n个整数,为数字A的所以元素,数据保证没有重复元素;
接下来的m行,每行一个正整数表示询问的target。
输出
若target在数组中出现,输出taeget的位置,若不存在,输出它应该插入的位置。
示例输入
4 2 1 2 3 4 2 0
示例输出
2 1
提示
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int a[3000000];
int Binsearch(int key,int low,int high)
{
int mid;
while (low<=high)
{
mid = (low+high)/2;
if (a[mid]==key)
return mid;
if (a[mid]>key)
high = mid-1;
else low = mid+1;
}
return low;
}
int main()
{
int n,m,i,j,key;
while (~scanf ("%d %d",&n,&m))
{
for (i=1;i<=n;i++)
scanf ("%d",&a[i]);
for(i=0;i<m;i++)
{
scanf ("%d",&key);
printf ("%d\n",Binsearch(key,1,n));
}
}
return 0;
}