Cod sursa(job #2217769)

Utilizator GiihuoTihufiNeacsu Stefan GiihuoTihufi Data 2 iulie 2018 09:00:19
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
struct Rect
{
    int x0;
    int x1;
    int y0;
    int y1;
} v[4];

uint64_t A, P;
uint64_t ar(Rect r)      {   return 1LL*(r.x1-r.x0)*(r.y1-r.y0);   }
uint64_t pe(Rect r) {   return 2LL*(r.x1+r.y1-r.x0-r.y0);   }
Rect inter(Rect r1, Rect r2)
{
    Rect r;
    r.x0 = max(r1.x0, r2.x0), r.x1 = min(r1.x1, r2.x1);
    r.y0 = max(r1.y0, r2.y0), r.y1 = min(r1.y1, r2.y1);
    if(r.x0 > r.x1 || r.y0 > r.y1)
    {
        r.x0 = r.x1 = 0;
        r.y0 = r.y1 = 0;
    }
    return r;
}
int main()
{
    for(int i=1;i<=3;i++)
        f>>v[i].x0>>v[i].y0>>v[i].x1>>v[i].y1;
    A = ar(v[1]) + ar(v[2]) + ar(v[3]) - (ar(inter(v[1], v[2]))  + ar(inter(v[1], v[3])) + ar(inter(v[2], v[3])))+ar(inter(inter(v[1], v[2]), v[3]));
    P = pe(v[1]) + pe(v[2]) + pe(v[3]) - (pe(inter(v[1], v[2]))  + pe(inter(v[1], v[3])) + pe(inter(v[2], v[3])))+pe(inter(inter(v[1], v[2]), v[3]));
    g<<A<<' '<<P;
    return 0;
}