ENG  RUSTimus Online Judge
Online Judge
Problems
Authors
Online contests
About Online Judge
Frequently asked questions
Site news
Webboard
Links
Problem set
Submit solution
Judge status
Guide
Register
Update your info
Authors ranklist
Current contest
Scheduled contests
Past contests
Rules
back to board

Discussion of Problem 1254. Die Hard

WHY I GOT "WA"??? Heeeeelp!
Posted by Serrg 19 Mar 2003 00:53
const z:array[1..8,1..2]of integer=((-1,-1),(-1,0),(-1,1),(0,1),
(1,1),(1,0),(1,-1),(0,-1));
var
tab:array[0..76,0..76] of boolean;
r:array[1..75,1..75] of real;
v,q2,sum,psum:real;
i,j,jj,k,x0,y0,x,y:integer;
m,n:integer;
c:char;

procedure find;
type rec=record
     x,y:integer;
    end;
var i,j,top1,top2:integer;
    st1,st2:array[1..1700] of rec;
    a1,a2:integer;
begin
top1:=1;
top2:=0;
st1[1].x:=x0;
st1[1].y:=y0;

repeat
for i:=1 to top1 do begin
if (st1[i].x=x)and(st1[i].y=y) then begin
                               sum:=sum+r[x,y];
                               exit;
                               end;
for j:=1 to 8 do begin
a1:=st1[i].x+z[j,1];
a2:=st1[i].y+z[j,2];
if (tab[a1,a2]=false)and(r[a1,a2]<0) then begin
   inc(top2);
   st2[top2].x:=a1;
   st2[top2].y:=a2;
   if (z[j,1]<>0)and(z[j,2]<>0) then  r[a1,a2]:=r[st1[i].x,st1[i].y]
+q2
   else r[a1,a2]:=r[st1[i].x,st1[i].y]+1;
   end;
end;
end;
st1:=st2;
top1:=top2;
top2:=0;
until top1=0;
end;


begin
q2:=sqrt(2);
readln(m,n,k,v);
for i:=0 to n+1 do
for j:=0 to m+1 do
tab[i,j]:=true;
for i:=1 to n do begin
for j:=1 to m do begin
read(c);
if c='.' then tab[i,j]:=false;
end;
readln;
end;
readln(y0,x0);

for i:=1 to k do  begin
for j:=1 to n do
for jj:=1 to m do
r[j,jj]:=-1;
readln(y,x);
r[x0,y0]:=0.0000001;
psum:=sum;
find;
if abs(sum-psum)>0.5 then begin
x0:=x;
y0:=y;
end;
end;
sum:=sum/v;
writeln(sum:0:2);
end.