Cod sursa(job #2406562)

Utilizator Carol_LucaCarol Luca Carol_Luca Data 15 aprilie 2019 21:27:04
Problema Reuniune Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.55 kb
/// reuniune


#include <bits/stdc++.h>



using namespace std;



struct Drept {

  int x1;

  int x2;

  int y1;

  int y2;

};

Drept a[4];

using ll = long long;



Drept inter (Drept a, Drept b) {

  Drept c;

  c.x1 = max (a.x1, b.x1);

  c.y1 = max (a.y1, b.y1);

  c.x2 = min (a.x2, b.x2);

  c.y2 = min (a.y2, b.y2);

  if (c.x1 > c.x2)

    c.x1 = c.x2;

  if (c.y1 > c.y2)

    c.y1 = c.y2;

  return c;

}



ll arie (Drept a) {

  return 1LL * (a.x2 - a.x1) * (a.y2 - a.y1);

}



ll per (Drept a) {

  return 2LL * (1LL * (a.x2 - a.x1) + 1LL * (a.y2 - a.y1));

}



int main() {

  ll sol1, sol2;

  freopen ("reuniune.in", "r", stdin);

  freopen ("reuniune.out", "w", stdout);

{1}

  scanf ("%d%d%d%d", &a[1].x1, &a[1].y1, &a[1].x2, &a[1].y2);

  scanf ("%d%d%d%d", &a[2].x1, &a[2].y1, &a[2].x2, &a[2].y2);

  scanf ("%d%d%d%d", &a[3].x1, &a[3].y1, &a[3].x2, &a[3].y2);

{1}

  sol1 = sol2 = 0;

{1}

  sol1 += arie (a[1]);

  sol2 += per (a[1]);

  sol1 += arie (a[2]);

  sol2 += per (a[2]);

  sol1 += arie (a[3]);

  sol2 += per (a[3]);

{1}

  sol1 -= arie (inter (a[1], a[2]));

  sol2 -= per (inter (a[1], a[2]));

  sol1 -= arie (inter (a[3], a[2]));

  sol2 -= per (inter (a[3], a[2]));

  sol1 -= arie (inter (a[1], a[3]));

  sol2 -= per (inter (a[1], a[3]));

{1}

  sol1 += arie (inter (a[1], inter (a[2], a[3])));

  sol2 += per (inter (a[1], inter (a[2], a[3])));

{1}

  printf ("%lld %lld\n", sol1, sol2);

  return 0;

}