Poj 2503

#include<iostream>
//#include<algorithm>
#include<string.h>

using namespace std;

struct dict{
 char en[11];
 char a[11];
}d[100001];

int cmp(const void *x,const void *y)
{
 return (strcmp((char*)((dict *)x)->a,(char *)((dict*)y)->a  ) );
}

int sBinarySearch(char *s,int low,int high)
{
 int mid,nCmp;
 while(low<=high)
 {
  mid=(low+high)/2;
  nCmp=strcmp(d[mid].a,s);
  if(nCmp==0)
   return mid;
  else if(nCmp<0)
   low=mid+1;
  else
   high=mid-1;
 }
 return -1;
}

int main ()
{
    int i,j,n;
 char f[13],c;
 i=0;
 while(1)
 {
  c=getchar();
  if(c=='\n')
   break;
  scanf("%s%s",f,d[i].a);
  d[i].en[0]=c;
  j=0;
  while(f[j])
  {
   d[i].en[j+1]=f[j];
   j++;
  }
  d[i].en[j+1]='\0';
  getchar();
  i++;

 }

 qsort((void *)d,i,sizeof(d[0]),cmp);

    while(scanf("%s",f)!=EOF)
 {
  n=sBinarySearch(f,0,i-1);
  if(n<0)
   printf("eh\n");
  else
   printf("%s\n",d[n].en);
 }

 return 0;
}

原文地址:https://www.cnblogs.com/qingcheng/p/2026312.html