Pagini recente » Cod sursa (job #68330) | Cod sursa (job #2203519) | Cod sursa (job #2604582) | Cod sursa (job #2359296) | Cod sursa (job #44237)
Cod sursa(job #44237)
{
Problema regiuni
}
Program regiuni;
Const Max = 1000;
Type dreapta = record
a, b, c : Longint;
end;
elm = record
x, y : Longint;
e : boolean;
end;
vector = array[1..Max] of elm;
Var n, m, i, grf : Longint;
d : array[1..Max] of dreapta;
v : array[1..Max] of vector;
l : array[1..Max] of Integer;
vert, cod : boolean;
mm, nn : real;
ki, kf, k, j : Integer;
Begin
Assign( input, 'regiuni.in' );
Reset( input );
Readln( n, m );
For i := 1 to n do
Readln( d[i].a, d[i].b, d[i].c );
l[1] := m;
For i := 1 to m do
Begin
Readln( v[1][i].x, v[1][i].y );
v[1,i].e := true;
End;
Close( input );
ki := 1;
grf := 1;
For i := 1 to n do
Begin
If d[i].b = 0 then
Begin
vert := true;
mm := 0;
nn := -d[i].c/d[i].a;
End
else
Begin
vert := false;
mm := -d[i].a/d[i].b;
nn := -d[i].c/d[i].b;
End;
kf := ki;
For k := 1 to ki do
Begin
kf := kf +1;
l[kf] := 0;
For j := 1 to l[k] do
Begin
Case vert of
true: if v[k][j].x > nn then cod := true
else cod := false;
false: if v[k][j].y < mm*v[k][j].x + nn then cod := true
else cod := false;
End;
If cod then
Begin
l[kf] := l[kf]+1;
v[kf][l[kf]] := v[k][j];
v[k][j].e := false;
End;
End;
End;
if l[kf] = 0 then kf := kf-1;
ki := kf;
End;
grf := 0;
For i := 1 to kf do
Begin
cod := false;
For j := 1 to l[i] do
if v[i,j].e then
Begin
cod := true;
break;
End;
if cod then grf := grf +1;
End;
Assign( output, 'regiuni.out' );
Rewrite( output );
Writeln( grf );
Close( output );
End.