Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program WOLLY;
- var i,j, n, m:integer;
- a:array[1..100, 1..100] of integer;
- StartX, StartY:integer;
- d:integer;
- b:array[1..100] of integer;
- ResenjeX,ResenjeY:array[1..100] of integer;
- r:integer;
- procedure solve(X, Y, korak:integer);
- var i:integer;
- error:boolean;
- begin
- // u desno
- error:=X+b[korak]>m;
- if not (error) then
- for i:=1 to b[korak] do
- if a[X+i, Y] = 1 then
- begin
- error:=true;
- break;
- end;
- if not (error) then
- begin
- if korak < d then
- solve(X+b[korak], Y, korak+1)
- else
- begin
- if r > 0 then
- for i:=1 to r do
- if (ResenjeX[i]=X+b[korak]) and (ResenjeY[i]=Y) then
- begin
- error:=true;
- break;
- end;
- if not (error) then
- begin
- r:=r+1;
- ResenjeX[r]:=X+b[korak];
- ResenjeY[r]:=Y;
- writeln('Resenje (', X+b[korak], ',', Y, ')');
- end;
- end;
- end;
- // u levo
- error:=X-b[korak]<1;
- if not(error) then
- for i:=1 to b[korak] do
- if a[X-i, Y] = 1 then
- begin
- error:=true;
- break;
- end;
- if not (error) then
- begin
- if korak < d then
- solve(X-b[korak], Y, korak+1)
- else
- begin
- if r > 0 then
- for i:=1 to r do
- if (ResenjeX[i]=X-b[korak]) and (ResenjeY[i]=Y) then
- begin
- error:=true;
- break;
- end;
- if not (error) then
- begin
- r:=r+1;
- ResenjeX[r]:=X-b[korak];
- ResenjeY[r]:=Y;
- writeln('Resenje (', X-b[korak], ',', Y, ')');
- end;
- end;
- end;
- // na gore
- error:=Y-b[korak]<1;
- if not(error) then
- for i:=1 to b[korak] do
- if a[X, Y-i] = 1 then
- begin
- error:=true;
- break;
- end;
- if not (error) then
- begin
- if korak < d then
- solve(X, Y-b[korak], korak+1)
- else
- begin
- if r > 0 then
- for i:=1 to r do
- if (ResenjeX[i]=X)and(ResenjeY[i]=Y-b[korak]) then
- begin
- error:=true;
- break;
- end;
- if not (error) then
- begin
- r:=r+1;
- ResenjeX[r]:=X;
- ResenjeY[r]:=Y-b[korak];
- writeln('Resenje (', X,',', Y-b[korak], ')');
- end;
- end;
- end;
- // na dole
- error:=Y+b[korak]>m;
- if not(error) then
- for i:=1 to b[korak] do
- if (a[X, Y+i] = 1) then
- begin
- error:=true;
- break;
- end;
- if not (error) then
- begin
- if korak < d then
- solve(X, Y+b[korak], korak+1)
- else
- begin
- if r > 0 then
- for i:=1 to r do
- if(ResenjeX[i]=X)and(ResenjeY[i]=Y+b[korak]) then
- begin
- error:=true;
- break;
- end;
- if not (error) then
- begin
- r:=r+1;
- ResenjeX[r]:=X;
- ResenjeY[r]:=Y+b[korak];
- writeln('Resenje (', X,',', Y+b[korak], ')');
- end;
- end;
- end;
- end;
- begin
- read(n, m, StartX, StartY);
- for i:=1 to n do
- for j:=1 to m do
- read(a[i, j]);
- readln(d);
- for i:=1 to d do
- read(b[i]);
- r:=0;
- solve(StartX, StartY, 1);
- writeln(r);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement