Cod sursa(job #197587)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 5 iulie 2008 11:22:24
Problema Gropi Scor 0
Compilator fpc Status done
Runda Junior Challenge 2008 Marime 2.01 kb
var xc,yc,n,j,xfinal,yfinal,xi,xf,yi,yf,m,p,u,ii,c,i:longint;
a:array[1..200,1..200] of longint;
x,y:array[1..310000] of longint;
v:array[1..100000] of longint;
f:text;

procedure lee;
begin
p:=1;
if yi<yf then begin
xfinal:=xf;
yfinal:=yf;
x[1]:=xi;
y[1]:=yi;
a[xi,yi]:=1;
end
else begin
xfinal:=xi;
yfinal:=yi;
x[1]:=xf;
y[1]:=yf;
a[xf,yf]:=1;
end;
u:=1;
while p<=u do begin
xc:=x[p];
yc:=y[p];
if (xc-1>0) and (a[xc-1,yc]=0) then begin
                                    inc(u);
                                    x[u]:=xc-1;
                                    y[u]:=yc;
                                    a[xc-1,yc]:=a[xc,yc]+1;
                                   end;
if (xc+1<=2) and (a[xc+1,yc]=0) then begin
                                    inc(u);
                                    x[u]:=xc+1;
                                    y[u]:=yc;
                                    a[xc+1,yc]:=a[xc,yc]+1;
                                    end;
if (yc-1>0) and (a[xc,yc-1]=0) then begin
                                    inc(u);
                                    x[u]:=xc;
                                    y[u]:=yc-1;
                                    a[xc,yc-1]:=a[xc,yc]+1;
                                    end;
if (yc+1<=c) and (a[xc,yc+1]=0) then begin
                                    inc(u);
                                    x[u]:=xc;
                                    y[u]:=yc+1;
                                    a[xc,yc+1]:=a[xc,yc]+1;
                                    end;
inc(p);
end;
end;

procedure citire;
var i:longint;
begin
assign(f,'gropi.in');reset(f);
readln(f,c,n);
for i:=1 to n do begin
read(f,ii,j);
a[ii,j]:=1;
end;
read(f,m);
for i:=1 to m do begin
read(f,xi,yi,xf,yf);
lee;
if yi<yf then v[i]:=a[xfinal,yfinal]
         else v[i]:=a[xfinal,yfinal]-1;
end;
close(f);
end;


procedure afisare;
begin
assign(f,'gropi.out');rewrite(f);
for i:=1 to m do
writeln(f,v[i]);
close(f);
end;
begin
citire;
afisare;
end.