Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const long long mod = 1e9 + 9;
- const int MAXN = 1e5 + 10;
- const int INF = 1e9 + 7;
- const long long P = 31;
- struct point {
- long long x, y;
- long long norm() {
- return x * x + y * y;
- }
- double len() {
- return sqrt(norm());
- }
- };
- struct line {
- point a, b;
- };
- istream &operator>>(istream &in, point &a) {
- in >> a.x >> a.y;
- return in;
- }
- istream &operator>>(istream &in, line &a) {
- in >> a.a >> a.b;
- return in;
- }
- ostream &operator<<(ostream &out, const point &a) {
- out << a.x << ' ' << a.y << '\n';
- return out;
- }
- bool operator<(point a, point b) {
- if (a.x == b.x)
- return (a.y > b.y);
- return (a.x > b.x);
- }
- point operator*(int x, point p) {
- return {x * p.x, x * p.y};
- }
- int operator*(point a, point b) {
- return a.x * b.x + a.y * b.y;
- }
- int operator%(point a, point b) {
- return a.x * b.y - a.y * b.x;
- }
- bool operator==(point a, point b) {
- return ((a.x == b.x) && (a.y == b.y));
- }
- point vect(point a, point b) {
- return {b.x - a.x, b.y - a.y};
- }
- double angle(point a, point b) {
- double cos = (a * b) / (sqrt(a * a) * sqrt(b * b));
- return acos(cos) * 180 / acosl(-1.0);
- }
- double distPoint(point a, point b) {
- return sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y));
- }
- double distLine(point s, point a, point b) {
- return abs((a.y - b.y) * s.x + (b.x - a.x) * s.y + (a.x * b.y - a.y * b.x)) / vect(a, b).len();
- }
- double angle(point a, point b, point c) {
- point ab = vect(a, b);
- point ac = vect(a, c);
- return ab * ac;
- }
- line a, b;
- int trb1, trb2, tra1, tra2, tr, tr2, tr3;
- bool sign(int a, int b) {
- if ((a == 0 && b != 0) || (a != 0 && b == 0))
- return true;
- if ((a < 0 && b > 0) || (a > 0 && b < 0))
- return true;
- return false;
- }
- void zeroCheck(int trb1, int trb2, int tra1, int tra2) {
- if (trb1 == 0 && trb2 == 0 && tra1 == 0 && tra2 == 0) {
- if (b.b < b.a)
- swap(b.b, b.a);
- if (a.b < a.a)
- swap(a.b, a.a);
- if (((a.a < b.a || a.a == b.a) && (b.a < a.b || b.a == a.b)) || ((b.a < a.a || b.a == a.a) && (a.a < b.b || a.a == b.b))) {
- cout << "YES";
- exit(0);
- } else {
- cout << "NO";
- exit(0);
- }
- }
- }
- int main() {
- // ifstream cin("input.txt");
- // ofstream cout("output.txt");
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- cin >> a >> b;
- //cout << (vect(a.a, a.b) % vect(a.a, b.a)) << ' ' << (vect(a.a, a.b) % vect(a.a, b.b)) << ' ' << (vect(b.a, b.b) % vect(b.a, a.a)) << ' ' << (vect(b.a, b.b) % vect(b.a, a.b)) << '\n';
- trb1 = (vect(a.a, a.b) % vect(a.a, b.a));
- trb2 = (vect(a.a, a.b) % vect(a.a, b.b));
- tra1 = (vect(b.a, b.b) % vect(b.a, a.a));
- tra2 = (vect(b.a, b.b) % vect(b.a, a.b));
- zeroCheck(trb1, trb2, tra1, tra2);
- if (sign(trb1, trb2) && sign(tra1, tra2))
- cout << "YES";
- else
- cout << "NO";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement