Guest User

Untitled

a guest
Mar 18th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. #include <iostream>
  2. #define vec2 pair<long, long>
  3. #define x first
  4. #define y second
  5. using namespace std;
  6.  
  7. vec2 vecMinus(vec2 a, vec2 b) {
  8. return vec2(a.x - b.x, a.y - b.y);
  9. }
  10.  
  11. long long mult(vec2 a, vec2 b) {
  12. return a.x * b.y - a.y * b.x;
  13. }
  14.  
  15. bool check(vec2 angle, vec2 a, vec2 b, vec2 o) {
  16. angle = vecMinus(angle, o);
  17. a = vecMinus(a, o);
  18. b = vecMinus(b, o);
  19. long long ar = mult(angle, a);
  20. long long br = mult(angle, b);
  21. if (ar == 0 && br == 0) {
  22. long int zero = 0;
  23. return min(a.x, b.x) <= max(angle.x, zero) && max(a.x, b.x) >= min(angle.x, zero) &&
  24. min(a.y, b.y) <= max(angle.y, zero) && max(a.y, b.y) >= min(angle.y, zero);
  25. }
  26. return ar * br <= 0;
  27. }
  28.  
  29. int main() {
  30.  
  31. vec2 p1, p2, p3, p4;
  32. cin » p1.x » p1.y » p2.x » p2.y;
  33. cin » p3.x » p3.y » p4.x » p4.y;
  34.  
  35. bool result = check(p4, p1, p2, p3) && check(p2, p3, p4, p1);
  36.  
  37. if (result) {
  38. cout « "YES";
  39. } else {
  40. cout « "NO";
  41. }
  42. }
Add Comment
Please, Sign In to add comment