evgenko

Untitled

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