Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define x first
- #define y second
- using namespace std;
- bool in_one_sector(int a, int b, int c, int d){
- if (a>b) swap(a,b);
- if (c>d) swap(c,d);
- if (max(a,c) <= min(b,d))
- return true;
- else
- return false;
- }
- void build_vectors(pair<int, int> p1, pair<int,int> p2, pair<int, int> p3, pair<int, int> *v1, pair<int,int> *v2){
- v1->x = p2.x-p1.x;
- v1->y = p2.y-p1.y;
- v2->x = p3.x-p1.x;
- v2->y = p3.y-p1.y;
- }
- long long int kos_pr(pair<int, int> p1, pair<int, int> p2, pair<int,int> p3){
- pair<int, int> v1;
- pair<int, int> v2;
- build_vectors(p1,p2,p3,&v1,&v2);
- return v1.x*v2.y - v2.x*v1.y;
- }
- long long int sc_pr(pair<int, int> p1, pair<int, int> p2, pair<int,int> p3) {
- pair<int, int> v1;
- pair<int, int> v2;
- build_vectors(p1,p2,p3,&v1,&v2);
- return v1.x*v2.x + v1.y*v2.y;
- }
- bool solution(pair<int,int> p1, pair<int, int> p2, pair<int,int> p3, pair<int,int> p4){
- return in_one_sector(p1.x, p2.x, p3.x, p4.x) && in_one_sector(p1.y, p2.y, p3.y, p4.y) &&
- (((kos_pr(p1,p2,p3) * kos_pr(p1,p2,p4)<0)&&(kos_pr(p4,p3,p1)*kos_pr(p4,p3,p2)<0)) ||
- (kos_pr(p1,p2,p3)==0 && sc_pr(p3,p1,p2)<=0)||
- (kos_pr(p1,p2,p4)==0 && sc_pr(p4,p1,p2)<=0)||
- (kos_pr(p4,p3,p1)==0 && sc_pr(p1,p4,p3)<=0)||
- (kos_pr(p4,p3,p2)==0 && sc_pr(p2,p4,p3)<=0));
- }
- int main() {
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- pair<int, int> p[4];
- for (int i=0;i<4;i++){
- cin >> p[i].x;
- cin >> p[i].y;
- }
- if (solution(p[0],p[1], p[2], p[3]) == true)
- cout << "Yes";
- else
- cout << "No";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement