小金的询问

来源:互联网 发布:wifi劫持软件 编辑:程序博客网 时间:2024/04/29 09:53

小金的询问

Time Limit: 1000MS Memory limit: 65536K

题目描述

给定一个有序(升序)数字数组A,查找数字target,若target在数组中出现,返回位置,若不存在,返回它应该插入的位置

输入

  多组输入。
每组输入第一行输入两个整数n,m,分别代表数组长度和询问次数;

第二行输入n个整数,为数字A的所以元素,数据保证没有重复元素;
接下来的m行,每行一个正整数表示询问的target。

输出

   若target在数组中出现,输出taeget的位置,若不存在,输出它应该插入的位置。

示例输入

4 21 2 3 420

示例输出

21

提示


#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;}


 
0 0