fork(13) download
  1. #include <stdio.h>
  2.  
  3. struct point { double x, y; };
  4.  
  5. // Читать координаты точки
  6. struct point get()
  7. {
  8. struct point a;
  9. scanf("%lf%lf", &a.x, &a.y); // читаем координаты точки
  10. return a;
  11. }
  12.  
  13. // Вычисляет положение точки D(xd,yd) относительно прямой AB
  14. double g(struct point a, struct point b, struct point d)
  15. {
  16. return (d.x - a.x) * (b.y - a.y) - (d.y - a.y) * (b.x - a.x);
  17. }
  18.  
  19. // Лежат ли точки C и D с одной строны прямой (AB)?
  20. bool f(struct point a, struct point b, struct point c, struct point d)
  21. {
  22. return g(a, b, c) * g(a, b, d) >= 0;
  23. }
  24.  
  25. int main() {
  26. struct point a = get(), b = get(), c = get(), d = get();
  27. printf( f(a,b,c,d) && f(b,c,a,d) && f(c,a,b,d) ? "yes" : "no");
  28. return 0;
  29. }
Success #stdin #stdout 0s 3300KB
stdin
0	0	2	0	0	2	5	5
0	0	2	0	0	2	1	1
-1	-1	1	-1	0	1	0	0
-1	-1	1	-1	0	1	1	3
-1	-1	1	-1	0	1	0.5	0
-1	-1	1	-1	0	1	0	1
-2	-2	1	-1	0	1	0	0
-1	-1	1	-1	0	1	2	2
stdout
no