Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Why I got WA?This is my program.

Posted by gxj01 at 2003-07-27 21:53:52 on Problem 1196
program twofive; 
  var 
    a:array['A'..'Y']of longint; 
    c:array[1..25]of char; 
    f:array[0..6,0..6,0..6,0..6,0..6]of longint; 
    b:array[1..5]of longint; 
    num:array[1..5]of longint; 
    n:longint; 
    ch:char; 
function mi(i,j:longint):longint; 
  begin 
    if i<j then mi:=i else mi:=j; 
  end; 
procedure cal; 
  var 
    tot:longint; 
  begin 
    tot:=0; 
    if num[5]+1<=num[4] then tot:=tot+f[num[1],num[2],num[3],num[4],num[5]+1]; 
    if (num[4]<>5)and(num[4]+1<=num[3]) then tot:=tot+f[num[1],num[2],num[3],num[4]+1,num[5]]; 
    if (num[3]<>5)and(num[3]+1<=num[2]) then tot:=tot+f[num[1],num[2],num[3]+1,num[4],num[5]]; 
    if (num[2]<>5)and(num[2]+1<=num[1]) then tot:=tot+f[num[1],num[2]+1,num[3],num[4],num[5]]; 
    if (num[1]<>5) then tot:=tot+f[num[1]+1,num[2],num[3],num[4],num[5]]; 
    f[num[1],num[2],num[3],num[4],num[5]]:=tot; 
  end; 


procedure sou(k,sum,max:longint); 
  var 
    i:longint; 
  begin 
    if k=5 then begin 
      if sum<=max then begin num[5]:=sum;cal;end; 
      end else begin 
        for i:=mi(max,sum) downto 0 do 
          begin 
            num[k]:=i; 
            sou(k+1,sum-i,i); 
            num[k]:=0; 
          end; 
      end; 
  end; 



procedure main; 
  var 
    sum:longint; 
  begin 
    fillchar(f,sizeof(f),0); 
    f[5,5,5,5,5]:=1; 
    for sum:=24 downto 1 do 
      sou(1,sum,5); 
  end; 
procedure task1; 
  var 
    tot,j:longint; 
    ch:char; 
  begin 
    fillchar(b,sizeof(b),0); 
    tot:=0; 
    b[1]:=1; 
    for ch:='B' to 'X' do 
      begin 
        j:=a[ch]-1; 
        if j>=1 then tot:=tot+f[b[1]+1,b[2],b[3],b[4],b[5]]; 
        if j>=2 then tot:=tot+f[b[1],b[2]+1,b[3],b[4],b[5]]; 
        if j>=3 then tot:=tot+f[b[1],b[2],b[3]+1,b[4],b[5]]; 
        if j>=4 then tot:=tot+f[b[1],b[2],b[3],b[4]+1,b[5]]; 
        inc(b[a[ch]]); 
      end; 
    writeln(tot+1); 
  end; 
procedure task2; 
  var 
    ch:char; 
    i,j:longint; 
  begin 
    fillchar(b,sizeof(b),0); 
    b[1]:=1; 
    a['A']:=1; 
    for ch:='B' to 'Y' do 
      begin 
        j:=5; 
        if f[b[1]+1,b[2],b[3],b[4],b[5]]>=n then j:=1 else n:=n-f[b[1]+1,b[2],b[3],b[4],b[5]]; 
        if j=5 then if f[b[1],b[2]+1,b[3],b[4],b[5]]>=n then j:=2 else n:=n-f[b[1],b[2]+1,b[3],b[4],b[5]]; 
        if j=5 then if f[b[1],b[2],b[3]+1,b[4],b[5]]>=n then j:=3 else n:=n-f[b[1],b[2],b[3]+1,b[4],b[5]]; 
        if j=5 then if f[b[1],b[2],b[3],b[4]+1,b[5]]>=n then j:=4 else n:=n-f[b[1],b[2],b[3],b[4]+1,b[5]]; 
        a[ch]:=j; 
        inc(b[j]); 
      end; 
    for i:=1 to 5 do 
      for ch:='A' to 'Y' do 
        if a[ch]=i then write(ch); 
    writeln; 
  end; 

procedure init; 
  var 
    i,j:longint; 
  begin 
    readln(ch); 
    if ch='W' then begin 
      for i:=1 to 5 do 
        for j:=1 to 5 do 
          begin 
            read(c[i]); 
            a[c[i]]:=i; 
          end; 
      task1; 
    end else begin 
      read(n); 
      task2; 
    end; 
  end; 


  begin 
    main; 
    init; 
  end. 

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator