Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program _3C;
- type
- Point = record
- x, y : Integer;
- end;
- var
- a, b, p, pa, pb : Point;
- cross, dot : Integer;
- begin
- ReadLn(p.x, p.y);
- Read(a.x, a.y);
- ReadLn(b.x, b.y);
- (* Считаем вектора PA и PB *)
- pa.x := a.x - p.x;
- pa.y := a.y - p.y;
- pb.x := b.x - p.x;
- pb.y := b.y - p.y;
- (* Векторное произведение векторов PA * PB *)
- cross := pa.x * pb.y - pa.y * pb.x;
- (* Скалярное произведение векторов PA * PB *)
- dot := pa.x * pb.x + pa.y * pb.y;
- (* Точка P должна лежать на прямой AB (векторное произведение - нуль).
- * А ещё вектора AB и AP должны быть направлены в разные стороны
- * (скалярное произведение отрицательное или нуль). *)
- if (cross = 0) and (dot <= 0) then begin
- WriteLn('YES');
- end else begin
- WriteLn('NO');
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment