Cod sursa(job #197605)

Utilizator marius21Petcu Marius marius21 Data 5 iulie 2008 11:51:15
Problema Gropi Scor 50
Compilator fpc Status done
Runda Junior Challenge 2008 Marime 1.5 kb
type coord=record
x,y:longint;
end;
var a,t:array[0..100000]of coord;
f,g:text;
aux,c,x1,y1,x2,y2,n,m,i,k,nr:longint;

procedure sort(si,sj:longint);
var nr,di,dj,i,j,m:longint;
begin
 if si<sj then begin
  m:=(si+sj)div 2;
  sort(si,m);
  sort(m+1,sj);
  i:=si;
  j:=m+1;
  nr:=0;
  while (i<=m) and (j<=sj) do
   if a[i].y<=a[j].y then begin
    inc(nr);
    t[nr]:=a[i];
    inc(i);
    end else begin
    inc(nr);
    t[nr]:=a[j];
    inc(j);
    end;
  while (i<=m) do begin
   inc(nr);
   t[nr]:=a[i];
   inc(i);
   end;
  while (j<=sj) do begin
   inc(nr);
   t[nr]:=a[j];
   inc(j);
   end;
  for i:=1 to nr do
   a[si+i-1]:=t[i];
  end;
 end;


begin
assign(f,'gropi.in');
assign(g,'gropi.out');
reset(f);
rewrite(g);
read(f,c,n);
a[0].x:=2;
a[1].x:=1;
a[1].y:=0;
a[2].x:=2;
a[2].y:=0;
for i:=1 to n do begin
  inc(a[0].x);
  read(f,a[a[0].x].x,a[a[0].x].y);
  end;
inc(a[0].x,2);
a[a[0].x-1].x:=1;
a[a[0].x-1].y:=c+1;
a[a[0].x].x:=2;
a[a[0].x].y:=c+1;
sort(1,a[0].x);
read(f,m);
for k:=1 to m do begin
  read(f,x1,y1,x2,y2);
  if y2<y1 then begin
    aux:=y1;
    y1:=y2;
    y2:=aux;
    aux:=x1;
    x1:=x2;
    x2:=aux;
    end;
  for i:=1 to a[0].x do
    if (a[i].x=x1) and (y1<a[i].y) then
      break;
  nr:=0;
  while a[i].y<=y2 do begin
    if a[i].x=x1 then begin
      inc(nr);
      x1:=(x1 mod 2)+1;
      end;
    inc(i);
    end;
  if x1<>x2 then
    inc(nr);
  writeln(g,nr+(y2-y1)+1);
  end;
close(f);
close(g);
end.