Advertisement
evgenko

Untitled

Mar 9th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.68 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define x first
  3. #define y second
  4. using namespace std;
  5. bool in_one_sector(int a, int b, int c, int d){
  6.     if (a>b) swap(a,b);
  7.     if (c>d) swap(c,d);
  8.     if (max(a,c) <= min(b,d))
  9.         return true;
  10.     else
  11.         return false;
  12. }
  13. void build_vectors(pair<int, int> p1, pair<int,int> p2, pair<int, int> p3, pair<int, int> *v1, pair<int,int> *v2){
  14.     v1->x = p2.x-p1.x;
  15.     v1->y = p2.y-p1.y;
  16.     v2->x = p3.x-p1.x;
  17.     v2->y = p3.y-p1.y;
  18. }
  19. long long int kos_pr(pair<int, int> p1, pair<int, int> p2, pair<int,int> p3){
  20.     pair<int, int> v1;
  21.     pair<int, int> v2;
  22.     build_vectors(p1,p2,p3,&v1,&v2);
  23.     return v1.x*v2.y - v2.x*v1.y;
  24. }
  25.  
  26. long long int sc_pr(pair<int, int> p1, pair<int, int> p2, pair<int,int> p3) {
  27.     pair<int, int> v1;
  28.     pair<int, int> v2;
  29.     build_vectors(p1,p2,p3,&v1,&v2);
  30.     return v1.x*v2.x + v1.y*v2.y;
  31. }
  32. bool solution(pair<int,int> p1, pair<int, int> p2, pair<int,int> p3, pair<int,int> p4){
  33.     return in_one_sector(p1.x, p2.x, p3.x, p4.x) && in_one_sector(p1.y, p2.y, p3.y, p4.y) &&
  34.             (((kos_pr(p1,p2,p3) * kos_pr(p1,p2,p4)<0)&&(kos_pr(p4,p3,p1)*kos_pr(p4,p3,p2)<0)) ||
  35.             (kos_pr(p1,p2,p3)==0 &&  sc_pr(p3,p1,p2)<=0)||
  36.             (kos_pr(p1,p2,p4)==0 &&  sc_pr(p4,p1,p2)<=0)||
  37.             (kos_pr(p4,p3,p1)==0 &&  sc_pr(p1,p4,p3)<=0)||
  38.             (kos_pr(p4,p3,p2)==0 &&  sc_pr(p2,p4,p3)<=0));
  39. }
  40. int main() {
  41.     ios_base::sync_with_stdio(false);
  42.     cin.tie(NULL);
  43.     pair<int, int> p[4];
  44.     for (int i=0;i<4;i++){
  45.         cin >> p[i].x;
  46.         cin >> p[i].y;
  47.     }
  48.     if (solution(p[0],p[1], p[2], p[3]) == true)
  49.         cout << "Yes";
  50.     else
  51.         cout << "No";
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement