NPSC補完計劃

登入註冊帳號.

請輸入帳號, 密碼以及預計登入時間
進階搜尋  

最新消息:

歡迎光臨NPSC補完計劃

+ NPSC補完計劃 » NPSC國中組 » NPSC2008國中組初賽
 [PASCAL]F. 世界杯

作者 主題: [PASCAL]F. 世界杯  (閱讀 1682 次)

liouzhou_101

  • 初級會員
  • **
  • 文章數: 44
    • 檢視個人資料
[PASCAL]F. 世界杯
« 於: 七月 12, 2010, 12:31:01 pm »

就是将输入的信息按一定的顺序排序,可以得到各个队伍的排名情况,然后就是输出答案了。
具体处理很麻烦的!!!
看看就好...
代碼: [選擇]
type arr=record
       name : string;
       value,win,lose : longint;
     end;
var a : array[1..2,1..4] of arr;
    i,j,n,s1n,s2n,x,y : longint;
    s : string;
procedure change(var p,q:arr);
  var t : longint;
      s : string;
  begin
    s:=p.name;
    p.name:=q.name;
    q.name:=s;
    t:=p.value;
    p.value:=q.value;
    q.value:=t;
    t:=p.win;
    p.win:=q.win;
    q.win:=t;
    t:=p.lose;
    p.lose:=q.lose;
    q.lose:=t;
  end;
function big(p,q:arr):boolean;
  begin
    if p.value>q.value then begin
      big:=true;
      exit;
    end;
    if p.value<q.value then begin
      big:=false;
      exit;
    end;
    if p.win>q.win then begin
      big:=true;
      exit;
    end;
    if p.win<q.win then begin
      big:=false;
      exit;
    end;
    if p.lose<q.lose then begin
      big:=true;
      exit;
    end;
    if p.lose>q.lose then begin
      big:=false;
      exit;
    end;
    if p.name>q.name then begin
      big:=true;
      exit;
    end;
    big:=false;
  end;
procedure sort(k:longint);
  var i,j : longint;
  begin
    for i:=1 to 3 do
      for j:=i+1 to 4 do
        if big(a[k,j],a[k,i]) then change(a[k,i],a[k,j]);
  end;
procedure fun(k:longint;s:string);
  var i : longint;
      s1,s2,sx : string;
      c : integer;
  procedure get;
    var w : longint;
    begin
      for w:=1 to length(s) do
        if s[w]=' ' then break;
      i:=w;
    end;
  begin
    get;
    s1:=copy(s,1,i-1);
    delete(s,1,i);
    get;
    sx:=copy(s,1,i-1);
    val(sx,x,c);
    delete(s,1,i);
    get;
    sx:=copy(s,1,i-1);
    val(sx,y,c);
    delete(s,1,i);
    s2:=s;
    for i:=1 to 4 do
      if a[k,i].name=s1 then begin
        s1n:=i;
        break;
      end;
    for i:=1 to 4 do
      if a[k,i].name=s2 then begin
        s2n:=i;
        break;
      end;
  end;
begin
  readln(n);
  while n>0 do begin
    n:=n-1;
    for i:=1 to 2 do
      for j:=1 to 4 do
        with a[i,j] do begin
          readln(name);
          value:=0;
          win:=0;
          lose:=0;
        end;
    for i:=1 to 2 do begin
      for j:=1 to 6 do begin
        readln(s);
        fun(i,s); {s1n,s2n,x,y}
        if x>y then inc(a[i,s1n].value,3)
          else if x<y then inc(a[i,s2n].value,3)
            else begin
              inc(a[i,s1n].value);
              inc(a[i,s2n].value);
            end;
        inc(a[i,s1n].win,x);
        inc(a[i,s1n].lose,y);
        inc(a[i,s2n].win,y);
        inc(a[i,s2n].lose,x);
      end;
      sort(i);
      for j:=1 to 2 do
        writeln(chr(i+64),j,' ',a[i,j].name);
    end;
    write('BEST3 ');
    if big(a[1,3],a[2,3]) then writeln(a[1,3].name)
      else writeln(a[2,3].name);
  end;
end.

//你看2010南非世界杯了吗???
記錄
+ NPSC補完計劃 » NPSC國中組 » NPSC2008國中組初賽
 [PASCAL]F. 世界杯