Cod sursa(job #3220957)

Utilizator ezluciPirtac Eduard ezluci Data 5 aprilie 2024 15:58:46
Problema Reuniune Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
using namespace std;
#ifdef EZ
   #include "./ez/ez.h"
   const string FILE_NAME = "test";
#else
   #include <bits/stdc++.h>
   const string FILE_NAME = "reuniune";
#endif
#define mp make_pair
#define ll long long
#define pb push_back
#define fi first
#define se second
#define cin fin
#define cout fout
ifstream fin (FILE_NAME + ".in");
ofstream fout (FILE_NAME + ".out");

struct dr {
   ll x1, y1, x2, y2;
};


ll arie(dr x)
   { return max(0LL, x.x2-x.x1) * max(0LL, x.y2-x.y1); }

ll peri(dr x)
   { return 2 * (max(0LL, x.x2-x.x1) + max(0LL, x.y2-x.y1)); }


int main()
{
   dr v[3];
   for (int i = 0; i < 3; ++i)   cin >> v[i].x1 >> v[i].y1 >> v[i].x2 >> v[i].y2;

   ll a = 0, p = 0;
   a += arie(v[0]) + arie(v[1]) + arie(v[2]);
   p += peri(v[0]) + peri(v[1]) + peri(v[2]);
   for (int i = 0; i < 3; ++i)   for (int j = i+1; j < 3; ++j)
   {
      dr d{max(v[i].x1, v[j].x1), max(v[i].y1, v[j].y1), min(v[i].x2, v[j].x2), min(v[i].y2, v[j].y2)};
      a -= arie(d);
      p -= peri(d);
   }

   dr d{max({v[0].x1, v[1].x1, v[2].x1}), max({v[0].y1, v[1].y1, v[2].y1}), min({v[0].x2, v[1].x2, v[2].x2}), min({v[0].y2, v[1].y2, v[2].y2})};
   a += arie(d);
   p += peri(d);

   cout << a << ' ' << p;
}