Cod sursa(job #44591)
Utilizator | Data | 31 martie 2007 16:03:15 | |
---|---|---|---|
Problema | Regiuni | Scor | 100 |
Compilator | fpc | Status | done |
Runda | Arhiva de probleme | Marime | 2.82 kb |
{
Problema regiuni
}
Program regiuni;
Type elm = record
x, y : Integer;
end;
Var n, m, i, j, k, kf, a, b, c, st, dr, nrg : Integer;
l, v : array[1..1000] of elm;
grup : array[1..1000,1..2] of Integer;
mm, nn : real;
vert, cod : boolean;
Begin
Assign( input, 'regiuni.in' );
Reset( input );
Readln( n, m );
For i := 1 to n do
Readln( a, b, c );
For i := 1 to m do
Readln( l[i].x, l[i].y );
nrg := 1;
grup[1,1] := 1;
grup[1,2] := m;
Close( input );
Reset( input );
Readln( n, m );
For i := 1 to n do
Begin
Readln( a, b, c );
if b = 0 then
Begin
vert := true;
mm := 0;
nn := -c/a;
End
else
Begin
vert := false;
mm := -a/b;
nn := -c/b;
End;
kf := nrg;
For j := 1 to kf do
Begin
st := grup[j,1]-1;
dr := grup[j,2]+1;
For k := grup[j,1] to grup[j,2] do
Begin
Case vert of
true: if l[k].x > nn then cod := true
else cod := false;
false: if l[k].y < mm*l[k].x + nn then cod := true
else cod := false;
End;
If cod = true then
Begin
st := st+1;
v[st] := l[k];
End
else
Begin
dr := dr-1;
v[dr] := l[k];
End;
End;
If ( st <> grup[j,1]-1 ) and ( dr <> grup[j,2]+1 ) then
Begin
For k := grup[j,1] to grup[j,2] do
l[k] := v[k];
nrg := nrg+1;
grup[nrg,1] := dr;
grup[nrg,2] := grup[j,2];
grup[j,2] := st;
End;
End;
End;
Close( input );
Assign( output, 'regiuni.out' );
Rewrite( output );
Writeln( nrg );
Close( output );
End.