Počet bodov:
Program:  15b

Táto úloha sa dá nahradiť riešením sady conditions_cpp na Liahni (betaliahen.ksp.sk) . Ak chceš, aby ti namiesto bodov za riešenie tejto úlohy boli započítané body získané riešením spomínanej sady, na stránke odovdzaj pdf-ko s prezývkou, ktorú používaš na Liahni.

Ak máte akékoľvek otázky ohľadom tejto úlohy napíšte Mišovi Štrbovi na

Žaba je perfekcionista. Veď sa len pozrite na jeho vlasy. Každý začína a končí presne tam, kde má, každý má svoje miesto a žiaden nie je navyše. Okrem toho je Žaba zdravotník1. A čo robí zdravotník? Lepí leukoplasty, ako keby sme nemali vlastné ruky. Na každú ranu dva, lebo jeden proste nestačí.

Keďže je Žaba perfekcionista, potrebuje presne vedieť, akú plochu na koži jeho pacienta pokrývajú práve nalepené leukoplasty. Práve sa zaoberá nejakými zložitými paralelnými algoritmami2, na toto nemá čas a preto potrebuje aby ste mu s tým pomohli vy.

Úloha

Dostanete zadané pozície rohov dvoch leukoplastov. Musíte ich načítať zo vstupu. Máte napísať program, ktorý zistí a vypíše, koľko veľa (aký obsah) pacientovej kože je zalepenej. V prípade, že sa leukoplasty prekrývajú, oblasť, na ktorej sa prekrývajú zarátajte len raz.

Každý leukoplast je obdĺžnik v štvorcovej sieti, ktorého strany sú rovnobežné s osami x a y (skrátka, obyčajný rovný obdĺžnik).

Vstup

Vstup sa nachádza na štandardnom vstupe. Na jeho načítanie môžete použiť v Pascale funkciu readln(premenna), v Pythone funkciu premenna=input() a v C++ funkciu cin >> premenna.

Vstup sa skladá z dvoch riadkov, každý popisuje jeden leukoplast. Na prvom riadku sa nachádzajú súradnice ľavého dolného (dve čísla – \(x\)-ová a potom \(y\)-ová súradnica) a pravého horného rohu (ďalšie dve čísla – opäť najskôr \(x\)-ová a potom \(y\)-ová súradnica) prvého leukoplastu. Na druhom riadku sa nachádzajú súradnice rohov druhého leukoplastu v rovnakom formáte.

Všetky súradnice sú väčšie (alebo rovné) ako 0 a menšie ako \(1\,000\).

Výstup

Výsledok, teda obsah kože zakrytej leukoplastami, vypíšte na štandardný výstup, v Pascale na to slúži funkcia writeln(vysledok), v Pythone print(vysledok) a v C++ cout << vysledok.

Nezabudnite za číslom dať koniec riadka. writeln() a print() to za vás spravia automaticky, v C++ musíte napísať ešte cout << endl.

Príklady

Input:

1 1 8 4
8 4 14 8

Output:

45

Leukoplasty sa vôbec neprekrývajú, preto je výsledkom súčet ich obsahov.

Input:

0 0 20 20
5 5 15 15

Output:

400

V tomto prípade sa druhý leukoplast celý nachádza v prvom. Preto do celkového povrchu nepridáva žiadnu plochu. Obsah prvého leukoplastu je 400.

Input:

1 1 5 12
3 11 13 14

Output:

72

Prvý obdĺžnik má obsah 44, druhý má obsah 30. Avšak prekrývajú sa na ploche, ktorá má obsah 2. Preto celková plocha, ktorú pokrývajú je 44 + 30 - 2 = 72.


  1. Síce len pre dievčatá, ale to je teraz vedľajšie

  2. A popritom čaká, kým mu kuriér prinesie O(log n) počítačov…

Odovzdávanie

Na odovzdávanie sa musíš prihlásiť

Otázky a diskusia

Po skončení kola budete mať príležitosť na diskutovanie o riešeniach v diskusii pod vzorovým riešením.