题目链接:http://acm.hust.edu.cn/vjudge/contest/124435#problem/A

密码:acm

 

 

Sample Input
dog ogday
cat atcay
pig igpay
froot ootfray
loops oopslay

atcay
ittenkay
oopslay

Sample Output cat eh loops

 

分析:存和用的时候时要注意滴。gets,空格,len=0结束,空间,时间。

 

先空间超限再时间超限,唉~

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 #include <algorithm>
 5 #include <stdlib.h>
 6 #include<queue>
 7 #include<math.h>
 8 using namespace std;
 9 
10 #define N 250
11 #define maxn 115200
12 
13 char str[N],s[N],ss[N];
14 
15 struct node
16 {
17     char s1[N],s2[N];///这里开太大了要空间超限的
18 } p[maxn];
19 
20 int cmp(node e,node f)
21 {
22     return strcmp(e.s2,f.s2)<0;
23 }
24 int main()
25 {
26     int i,j=0,k;
27 
28     while(gets(ss))
29     {
30         int a=0,b=0;
31         int len=strlen(ss);
32         if(len==0)
33             break;///这样就可以完美结束了34         for(i=0; ss[i]; i++)
35             if(ss[i]==' ')
36             {
37                 k=i;
38                 break;
39             }
40 
41         for(i=0; i<k; i++)
42             p[j].s1[a++]=ss[i];
43         for(i=k+1; i<len; i++)
44             p[j].s2[b++]=ss[i];
45         j++;
46     }
47     sort(p,p+j,cmp);
48 
49     while(scanf("%s", s) != EOF)
50     {
51         int w=0;
52         int l=0,r=j-1;
53         ///二分了,就不会时间超限啦
54         while(l<=r)
55         {
56             int mid=(r+l)/2;
57             if(strcmp(s,p[mid].s2)==0)
58             {
59                 w=1;
60                 printf("%s\n", p[mid].s1);
61                 break;
62             }
63             else if(strcmp(p[mid].s2,s)>0)
64                 r=mid-1;
65             else
66                 l=mid+1;
67         }
68         if(w==0)
69                 printf("eh\n");
70     }
71     return 0;
72 }

 

posted on 2016-07-27 17:00  惟愿。。。  阅读(145)  评论(0编辑  收藏  举报