Cod sursa(job #49644)

Utilizator cheery_g1rlHaller Emanuela cheery_g1rl Data 6 aprilie 2007 10:37:59
Problema Regiuni Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.35 kb
type deter=record
         a,b,c:integer;
           end;
var f,g:text;
    d:array[1..1000] of deter;
    s:array[1..1000] of ansistring;
    n,m,c,i,j,x,y:integer;
procedure quick(ss,d:longint);
      var a,b,ia:longint;
      aux:ansistring;
     begin
       a:=ss; b:=d;
       repeat
         while s[a]<s[b] do dec(b);
          aux:=s[a]; s[a]:=s[b]; s[b]:=aux;
          inc(a); ia:=1;
          if b>a then
             begin
               while s[a]<s[b] do inc(a);
               aux:=s[a]; s[a]:=s[b]; s[b]:=aux;
               dec(b); ia:=0;
             end;
       until b<=a;
       if ss<a-ia then quick(ss,a-ia);
       if a-ia+1<d then quick(a-ia+1,d);
     end;

function pozitiv(x,y:integer; dd:deter):boolean;
     begin
       if dd.a*x+dd.b*y+dd.c>0 then pozitiv:=true
          else pozitiv:=false;
     end;
begin
assign(f,'regiuni.in');
reset(f);
readln(f,n,m);
for i:=1 to m do s[i]:='';
for i:=1 to n do readln(f,d[i].a,d[i].b,d[i].c);
for i:=1 to m do
  begin
    readln(f,x,y);
    for j:=1 to n do
       begin
         if pozitiv(x,y,d[j])then s[i]:=s[i]+'1'
           else s[i]:=s[i]+'0';
       end;
  end;
close(f);
quick(1,m);
c:=1;
for i:=2 to m do
   if s[i]<>s[i-1] then inc(c);
for i:=1 to m do writeln(s[i]);
assign(g,'regiuni.out');
rewrite(g);
writeln(g,c);
close(g);

end.