Pagini recente » Cod sursa (job #1126752) | Cod sursa (job #880314) | Cod sursa (job #670981) | Cod sursa (job #2521037) | Cod sursa (job #41724)
Cod sursa(job #41724)
{
Problema regiuni
}
Program regiuni;
Type dreapta = record
a, b, c : Longint;
end;
elm = record
x, y : Longint;
end;
vector = array[1..1000] of elm;
Var n, m, i, grf : Longint;
d : array[1..1000] of dreapta;
v : vector;
Procedure dei( st, dr, i : Integer );
Var vert, cod : boolean;
mm, nn : real;
ki, kf, j : Integer;
vv : vector;
Begin
If ( i > n ) or ( st = dr ) then exit;
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;
ki := st-1;
kf := dr+1;
For j := st to dr do
Begin
Case vert of
true: if v[j].x >= nn then cod := true
else cod := false;
false: if v[j].y <= mm*v[j].x + nn then cod := true
else cod := false;
End;
If cod then
Begin
ki := ki +1;
vv[ki] := v[j];
End
else
Begin
kf := kf -1;
vv[kf] := v[j];
End;
End;
if ( ki <> st-1 ) and ( kf <> dr ) then
Begin
grf := grf+1;
For j := st to dr do
v[j] := vv[j];
End;
dei( st, ki, i+1 );
dei( kf, dr, i+1 );
End;
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 );
For i := 1 to m do
Readln( v[i].x, v[i].y );
Close( input );
grf := 1;
dei( 1, m, 1 );
Assign( output, 'regiuni.out' );
Rewrite( output );
Writeln( grf );
Close( output );
End.