Cod sursa(job #41798)

Utilizator Bluedrop_demonPandia Gheorghe Bluedrop_demon Data 28 martie 2007 16:29:44
Problema Regiuni Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.77 kb
{
    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;
    viz : array[-100000..100000] of 0..1;
    vv : array[1..1000] of Longint;
    v : vector;
    vert, cod : boolean;
    mm, nn : real;
    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 );
        For i := 1 to m do
                Readln( v[i].x, v[i].y );
    Close( input );

    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;
        For j := 1 to m 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 vv[j] := vv[j]+i
                       else vv[j] := -vv[j]-i;
            End;
    End;

    grf := 0;
    For i := 1 to m do
        If viz[vv[i]] = 0 then
            Begin
                grf := grf +1;
                viz[vv[i]] := 1;
            End;

    Assign( output, 'regiuni.out' );
    Rewrite( output );
        Writeln( grf );
    Close( output );

End.