Cod sursa(job #48286)

Utilizator cheery_g1rlHaller Emanuela cheery_g1rl Data 4 aprilie 2007 17:15:08
Problema Regiuni Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.43 kb
type puncte=record
        x,y:integer;
         end;
     deter=record
         a,b,c:integer;
           end;
     vector=array[1..1000] of puncte;
var f,g:text;
    d:array[1..1000] of deter;
    v1,v2,vv1,vv2,p,v:vector;
    lv1,lv2,lv,lvv1,lvv2,n,m,c,i,j:integer;

function pozitiv(pp:puncte; dd:deter):boolean;
     begin
       if dd.a*pp.x+dd.b*pp.y+dd.c>0 then pozitiv:=true
          else pozitiv:=false;
     end;
procedure drepte(i:integer; v:vector; lv:integer);
    begin
      lv1:=0; lv2:=0;
      for j:=1 to lv do
         if pozitiv(v[j],d[i]) then begin inc(lv1); v1[lv1]:=v[j]; end
            else begin inc(lv2); v2[lv2]:=v[j]; end;
      if i=n then
         begin
           if (lv1=0)or(lv2=0) then c:=c+1
              else c:=c+2;
         end
            else begin
                   if lv1<>0 then drepte(i+1,v1,lv1);
                   if lv2<>0 then drepte(i+1,v2,lv2);
                  end;
    end;
begin
assign(f,'regiuni.in');
reset(f);
readln(f,n,m);
for i:=1 to n do readln(f,d[i].a,d[i].b,d[i].c);
lvv1:=0;
lvv2:=0;
for i:=1 to m do
  begin
    readln(f,p[i].x,p[i].y);
    if pozitiv(p[i],d[1]) then begin inc(lvv1); vv1[lvv1]:=p[i]; end
                          else begin inc(lvv2); vv2[lvv2]:=p[i]; end;
  end;
c:=0;
if lvv1<>0 then drepte(2,vv1,lvv1);
if lvv2<>0 then drepte(2,vv2,lvv2);
close(f);
assign(g,'regiuni.out');
rewrite(g);
writeln(g,c);
close(g);
end.