记录编号 49659 评测结果 AAEEAWWEEE
题目名称 [咲 -Saki-] 天才麻将少女什么编 最终得分 30
用户昵称 Gravatar超级腻害的小蝶子 是否通过 未通过
代码语言 Pascal 运行时间 0.029 s
提交时间 2012-11-08 19:38:09 内存使用 0.31 MiB
显示代码纯文本
program sakinani;
var tree,slinkl,slinkr,linkl,linkr,w : array[1..200]of longint;
    stu,sch,schn		     : array[1..200]of string;
   temp,t			     : string;
   k				     : integer;
procedure init;
var i,j,k,m,n : integer;
   temp,t     : string;
   flag	      : boolean;
begin
   assign(input,'sakinani.in');
   assign(output,'sakinani.out');
   reset(input);
   rewrite(output);

   readln(n);
   readln(temp);
   j:=pos(' ',temp);
   stu[1]:=copy(temp,1,j-1);
   delete(temp,1,j);
   sch[1]:=temp;
   for i:= 2 to n do
   begin
      readln(temp);
      j:=pos(' ',temp);
      stu[i]:=copy(temp,1,j-1);
      delete(temp,1,j);
      sch[i]:=temp;
      j:=1;flag:=false;
      repeat
	 if stu[j]>stu[i] then
	 begin
	    if linkl[j]=0 then begin linkl[j]:=i ; flag:=true;end
	    else j:=linkl[j];
	 end else
	    if linkr[j]=0 then begin linkr[j]:=i ; flag:=true;end
	    else j:=linkr[j];
      until flag;
   end;

   readln(k);
   for i:= 1 to k do readln;
   readln;

end; { init }

procedure find(i :integer );
var j	: integer;
   flag	: boolean;
begin
   j:=1;flag:=false;
   repeat
      if schn[j]=sch[i] then begin inc(w[j]);flag:=true end
      else begin
	 inc(k);schn[k]:=sch[i];
      if schn[j]>sch[i] then
	 begin
	    if slinkl[j]=0 then begin slinkl[j]:=k ; flag:=true;end
	    else j:=slinkl[j];
	 end else
	    if slinkr[j]=0 then begin slinkr[j]:=k ; flag:=true;end
	    else j:=slinkr[j];
      end;
   until flag;
end; { find }

procedure work;
var i,j,m,n : integer;
           flag:boolean;
begin
   k:=1;
   schn[1]:=sch[1];
   readln(temp);
   while temp<>'' do
      begin
      j:=1;flag:=false;
      repeat
	 if stu[j]=temp then begin find(j);flag:=true end else
	 if stu[j]>temp then
	    begin
	       if linkl[j]=0 then flag:=true
	       else j:=linkl[j];
	    end else
	       if linkr[j]=0 then flag:=true
	       else j:=linkr[j];
      until flag;
	 readln(temp)
      end;
end; { work }

procedure outp;
var i,j,t : longint;
begin
   t:=1;
   for i:= 2 to k do
      if w[i]>w[t] then t:=i;
   write(schn[t]);
end; { outp }

begin
   init;
   work;
   outp;
end.