记录编号 87995 评测结果 AAAAAAAAAA
题目名称 查字典 最终得分 100
用户昵称 Gravatar甘罗 是否通过 通过
代码语言 Pascal 运行时间 0.073 s
提交时间 2014-02-13 11:37:29 内存使用 1.01 MiB
显示代码纯文本
var
 m,n,i,j:longint;
 s:array[1..10000] of ansistring;
 c:array[1..10000] of longint;
 head,tail:array['a'..'z'] of longint;
 flag:char;
 ca:ansistring;
procedure swap(var a,b:longint);
 var
  temp:longint;
 begin
  temp:=a;
  a:=b;
  b:=temp;
 end;
procedure qsort(l,r:longint);
 var
  i,j:longint;
  x,y:ansistring;
 begin
  i:=l;
  j:=r;
  x:=s[(l+r) div 2];
  repeat
   while s[i]<x do
    inc(i);
   while x<s[j] do
    dec(j);
   if i<=j then
     begin
      y:=s[i];
      s[i]:=s[j];
      s[j]:=y;
      swap(c[i],c[j]);
      inc(i);
      dec(j);
     end;
  until i>j;
  if l<j then
    qsort(l,j);
  if i<r then
    qsort(i,r);
 end;
function find(l,r:longint):longint;
 var
  x:longint;
 begin
  if l=r then
    exit(l);
  x:=(l+r) div 2;
  if s[x]=ca then
    exit(x);
  if s[x]<ca then
    exit(find(x+1,r))
   else
    exit(find(l,x-1));
 end;
begin
 assign(input,'scanword.in');
 assign(output,'scanword.out');
 reset(input);
 rewrite(output);
 //while not(eof) do
  //begin
   readln(n);
   for i:=1 to n do
    begin
     readln(s[i]);
     readln(c[i]);
    end;
   qsort(1,n);
   flag:=s[1][1];
   head[flag]:=1;
   tail[s[n][1]]:=n;
   for i:=2 to n do
    if flag<>s[i][1] then
      begin
       tail[flag]:=i-1;
       flag:=s[i][1];
       head[flag]:=i;
       if flag='z' then
         break;
      end;
   readln(m);
   for i:=1 to m do
    begin
     readln(ca);
     writeln(c[find(head[ca[1]],tail[ca[1]])]);
    end;
   //end;
 close(input);
 close(output);
end.