Cod sursa(job #26843)

Utilizator izso88istvan zsolt izso88 Data 5 martie 2007 21:53:01
Problema Ograzi Scor 10
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.06 kb
const maxn=10000;

type    pe=^te;
        te=record
           ert:integer;
           kov:pe;
           end;
        sor=array[0..maxn] of pe;
var X,y:sor;
    t:text;
    N,M,W,H:longint;
    I,j,k,xp,yp:longint;
    HANY:longint;

procedure bef(bal,jobb,NNN:longint; var W:sor);
          var e:longint;
              p:pe;
          begin

           for e:=bal to jobb do begin
                                 new(p);
                                 p^.ert:=NNN;
                                 p^.kov:=w[e];
                                 w[e]:=p;
                                 end;
          end;

function benne:boolean;
         var p1,p2:pe;
             d:integer;
         begin
         d:=0;
         p1:=x[xp];
         p2:=y[yp];
         while (p1^.ert<>p2^.ert) and ((p1^.kov<>nil))
         do
         begin
         p2:=y[yp];
          while (p1^.ert<>p2^.ert) and (p2^.kov<>nil) do
          begin
          p2:=p2^.kov;
          writeln(p1^.ert,' ',p2^.ert);
          end;

         if p1^.ert<>p2^.ert then p1:=p1^.kov;
         end;
         if p1^.ert=p2^.ert then begin
                                 if p1^.kov<>nil then benne:=true
                                 else benne:=false;
                                 end
                                 else benne:=false;


         end;

begin
 assign(t,'ograzi.in');
 reset(T);
  read(t,N,M,W,H);
  for i:=0 to maxn do new(x[i]);
  for i:=0 to maxn do new(y[i]);
  for i:=0 to maxn do x[i]^.kov:=nil;
  for i:=0 to maxn do y[i]^.kov:=nil;
  for i:=0 to maxn do x[i]^.ert:=0;
  for i:=0 to maxn do y[i]^.ert:=0;


  for i:=1 to n do begin
                    read(t,xp);
                    read(t,yp);
                    bef(xp,xp+w,i,x);
                    bef(yp,yp+H,i,y);
                    end;
  hany:=0;
  for i:=1 to m do begin
                   read(t,xp,yp);
                   if benne then inc(hany);
                   end;


 close(T);
 assign(t,'ograzi.out');
 rewrite(T);
 writeln(t,hany);
 close(T);
end.