记录编号 87995 评测结果 AAAAAAAAAA
题目名称 查字典 最终得分 100
用户昵称 Gravatar甘罗 是否通过 通过
代码语言 Pascal 运行时间 0.073 s
提交时间 2014-02-13 11:37:29 内存使用 1.01 MiB
显示代码纯文本
  1. var
  2. m,n,i,j:longint;
  3. s:array[1..10000] of ansistring;
  4. c:array[1..10000] of longint;
  5. head,tail:array['a'..'z'] of longint;
  6. flag:char;
  7. ca:ansistring;
  8. procedure swap(var a,b:longint);
  9. var
  10. temp:longint;
  11. begin
  12. temp:=a;
  13. a:=b;
  14. b:=temp;
  15. end;
  16. procedure qsort(l,r:longint);
  17. var
  18. i,j:longint;
  19. x,y:ansistring;
  20. begin
  21. i:=l;
  22. j:=r;
  23. x:=s[(l+r) div 2];
  24. repeat
  25. while s[i]<x do
  26. inc(i);
  27. while x<s[j] do
  28. dec(j);
  29. if i<=j then
  30. begin
  31. y:=s[i];
  32. s[i]:=s[j];
  33. s[j]:=y;
  34. swap(c[i],c[j]);
  35. inc(i);
  36. dec(j);
  37. end;
  38. until i>j;
  39. if l<j then
  40. qsort(l,j);
  41. if i<r then
  42. qsort(i,r);
  43. end;
  44. function find(l,r:longint):longint;
  45. var
  46. x:longint;
  47. begin
  48. if l=r then
  49. exit(l);
  50. x:=(l+r) div 2;
  51. if s[x]=ca then
  52. exit(x);
  53. if s[x]<ca then
  54. exit(find(x+1,r))
  55. else
  56. exit(find(l,x-1));
  57. end;
  58. begin
  59. assign(input,'scanword.in');
  60. assign(output,'scanword.out');
  61. reset(input);
  62. rewrite(output);
  63. //while not(eof) do
  64. //begin
  65. readln(n);
  66. for i:=1 to n do
  67. begin
  68. readln(s[i]);
  69. readln(c[i]);
  70. end;
  71. qsort(1,n);
  72. flag:=s[1][1];
  73. head[flag]:=1;
  74. tail[s[n][1]]:=n;
  75. for i:=2 to n do
  76. if flag<>s[i][1] then
  77. begin
  78. tail[flag]:=i-1;
  79. flag:=s[i][1];
  80. head[flag]:=i;
  81. if flag='z' then
  82. break;
  83. end;
  84. readln(m);
  85. for i:=1 to m do
  86. begin
  87. readln(ca);
  88. writeln(c[find(head[ca[1]],tail[ca[1]])]);
  89. end;
  90. //end;
  91. close(input);
  92. close(output);
  93. end.