Cod sursa(job #253684)

Utilizator punkistBarbulescu Dan punkist Data 6 februarie 2009 11:09:56
Problema Grendizer Scor 10
Compilator fpc Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 1 Marime 1.22 kb
const max_mod=300;
var f,f2:text;
    a2,b2,n,m,r,j,rasp,i,a,b,k:longint;
    teren:array[-max_mod..max_mod,-max_mod..max_mod] of boolean;

function Limita(x,y:integer):boolean;
 var rez:boolean;
 begin
  rez:=true;
  if (x>300) or (x<-300) or (y<-300) or (y>300) then rez:=false;
  Limita:=rez;
 end;

begin
assign(f,'grendizer.in');
assign(f2,'grendizer.out');
reset(f);
rewrite(f2);
readln(f,n,m);
for i:=1 to n do
 begin
  readln(f,a,b);
  teren[a,b]:=true;
 end;
for i:=1 to m do
 begin
  readln(f,a,b,r);
  if r>max_mod*2-2 then writeln(f2,0)
  else
   begin
    rasp:=0;
    k:=r div 2;
    if r mod 2=0 then k:=k+1;
    for j:=0 to k do
     begin
      a2:=j;
      b2:=r-j;
      if Limita(a2+a,b2+b) then
       if teren[a2+a,b2+b] then
       begin rasp:=rasp+1; end;
      if a2<>0 then if Limita(a-a2,b2+b) then
       if teren[a-a2,b2+b] then
       begin rasp:=rasp+1; end;
      if b2<>0 then if Limita(a2+a,b-b2) then
       if teren[a2+a,b-b2] then
       begin rasp:=rasp+1; end;
      if (a2<>0) and (b2<>0) then if Limita(a-a2,b-b2) then
       if teren[a-a2,b-b2] then
        begin rasp:=rasp+1; end;
     end;
    writeln(f2,rasp);
   end;
 end;
close(f);
close(f2);
end.