BitComet 旗下网站

转到日志
相关贴吧:
acm of zju

zju2029 二分查找

楼主 发表于:2008-09-03 19:58:53 [回复]

/*The Intervals   二分查找
2008-09-03 19:49:57 Accepted 2029 C++ 00:00.01 848K 天将降大任于我
先对a[]排序,然后用二分查找法查出b[i]在a[]中的位置
*/
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1000;
int a[N+1],b[N+1];
bool cmp(int x,int y)
{
 return x<y;
}
int main()
{
 int n,m,k,i,j,mid,t=0;
 while(scanf("%d%d",&n,&m)!=EOF)
 {  
  for(i=0;i<n;i++)  scanf("%d",&a[i]);
  for(i=0;i<m;i++) scanf("%d",&b[i]);
  sort(a,a+n,cmp);
  for(k=0;k<m;k++)
  {
   if(b[k]<a[0]||b[k]>=a[n-1]) {printf("no such interval\n");continue;}  //当b[k]==a[0]时可以,但是当b[k]==a[n-1]时不符合,因为括号为[),不包括右端点
   i=0;j=n-1;
         while(i<j-1)         //循环条件为i<j-1,如为i<j则死循环
   {   mid=(i+j)/2;
    if(a[mid]>b[k]) j=mid;
    else i=mid;     //当a[mid]<=b[k],两种情况都要有,否则当b[]中有和a[]中相等的元素则无法输出
   }
   printf("[%d,%d)\n",a[i],a[j]);
  }
  printf("\n");
 }
 return 0;
}

心难泰,世风坏,旧时正气今何在?正义寡,人情薄,闻道虽多,茅塞不开。怪!怪!怪! 空等待,几多载,冲出重围人心快!暴雨打,狂风袭,任他折磨,此志难改。耐!耐!耐!

1楼 发表于:2008-09-03 20:40:52 [回复]

这是什么嘛,都看不懂呢


苏先生是也,周之爱者预我份也,,

 

您现在还没有登录,请在登录后发贴