Cod sursa(job #39761)

Utilizator QbyxEros Lorand Qbyx Data 26 martie 2007 22:33:11
Problema Regiuni Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.37 kb
program regiuni_hube_konnyu_vot;
type egyenes = record
       a, b, c: integer;
     end;
     pont = record
       x, y: integer;
     end;
     poz = array[1..5] of '0'..'1';
var
  Egyenesek: array[1..1000] of egyenes;
  Pontok: array[1..1000] of pont;
  Csoportok: array[1..50] of poz;
  f: text;
  n, m, i, j, r, k: word;
  volte: boolean;
  Voltake: array[1..1000] of boolean;

Function Egyenlo(a, b: poz): boolean;
var i: word;
begin
  Egyenlo := true;
  for i := 1 to n do
    if a[i] <> b[i] then
      begin
        Egyenlo := false;
        Exit;
      end;
end;

Function Eredmeny(e: egyenes; p: pont): longint;
begin
  Eredmeny := e.a * p.x + e.b * p.y + e.c;
end;

begin
  Assign(f, 'regiuni.in');
  Reset(f);
  ReadLn(f, n, m);
  for i := 1 to n do ReadLn(f, Egyenesek[i].a, Egyenesek[i].b, Egyenesek[i].c);
  for i := 1 to m do ReadLn(f, Pontok[i].x, Pontok[i].y);
  Close(f);

  for i := 1 to m do
    for j := 1 to n do
      if Eredmeny(Egyenesek[j], Pontok[i]) > 0 then Csoportok[i][j] := '1' else Csoportok[i][j] := '0';

  r := m;
  for i := 1 to m do
    If not(voltake[i]) then
      for j := i + 1 to m do
        if Egyenlo(Csoportok[i],Csoportok[j]) then
          begin
            Dec(r);
            Voltake[j] := true;
          end;
  Assign(f, 'regiuni.out');
  ReWrite(f);
  WriteLn(f, r);
  Close(f);
end.