Kolizija pravougaonika

Ispitati da li postoji kolizija između dva pravougaonika čije su ivice paralelne koordinatnim osama i koji su zadati gornjim levim temenom i donjim desnim temenom.

Opis ulaza

Sa standardnog ulaza unosi se 8 realnih vrednosti. U svakom redu unosi se par realnih vrednosti \(x\) i \(y\) koje predstavljaju koordinate određene tačke. Prvo se unose koordinate gornjeg levog temena i koordinate donjeg desnog temena jednog pravougaonika, a zatim i koordinate gornjeg levog temena i koordinate donjeg desnog temena drugog pravougaonika.

Opis izlaza

Na standardni izlaz ispisati da ukoliko postoji kolizija imeđu dva pravougaonika, inače ispisati ne.

Primer 1

Ulaz

0 2 3 0 1 1 5 0

Izlaz

da

Primer 2

Ulaz

0 2 3 0 10 10 11 8

Izlaz

ne

Rešenje

Opis glavnog rešenja

Ukoliko se prvi pravougaonik nalazi sa leve ili desne strane drugog pravougaonika, onda ne dolazi do kolizije. Slično, ukoliko se prvi pravougaonik nalazi ispod ili iznad drugog pravougaonika, onda takođe ne dolazi do kolizije. U svim ostalim slučajevima nastaje kolizija.

#include <iostream>
#include <vector>

using namespace std;

struct Point {
    double x;
    double y;
};

bool rect_collision(const Point &L1, const Point &R1, 
                    const Point &L2, const Point &R2) 
{
    if (R1.x < L2.x || R2.x < L1.x) {
        return false;
    }

    if (L2.y < R1.y || L1.y < R2.y) {
        return false;
    }

    return true;
}

int main(void)
{
    Point L1, R1, L2, R2;

    cin >> L1.x >> L1.y;
    cin >> R1.x >> R1.y;
    cin >> L2.x >> L2.y;
    cin >> R2.x >> R2.y;
    
    if (rect_collision(L1, R1, L2, R2)) {
        cout << "da" << endl;
    } else {
        cout << "ne" << endl;
    }

    return 0;
}