Cod sursa(job #2398710)

Utilizator ApostolIlieDanielApostol Daniel ApostolIlieDaniel Data 5 aprilie 2019 22:27:15
Problema Reuniune Scor 90
Compilator cpp-64 Status done
Runda simulare_de_oni_3 Marime 1.32 kb
#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);
  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);

  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);

  sol1 = sol2 = 0;

  sol1 += arie (a[1]);
  sol2 += per (a[1]);
  sol1 += arie (a[2]);
  sol2 += per (a[2]);
  sol1 += arie (a[3]);
  sol2 += per (a[3]);

  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]));

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

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