Cod sursa(job #3166710)

Utilizator RobertAcAcatrinei Robert-Marian RobertAc Data 9 noiembrie 2023 12:59:57
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <bits/stdc++.h>
#ifdef LOCAL
#define in cin
#define out cout
#endif
#define int int64_t
using namespace std;

#ifndef LOCAL
ifstream in("reuniune.in");
ofstream out("reuniune.out");
#endif

struct rect
{
    int st,dr,sus,jos;
    rect(int st=0,int dr=0,int sus=0,int jos=0):st(st),dr(dr),sus(sus),jos(jos){}
    int area()
    {
        if(dr<st||sus<jos)return 0;
        return (sus-jos)*(dr-st);
    }
    int peri()
    {
        if(dr<st||sus<jos)return 0;
        return ((sus-jos)+(dr-st))*2;
    }
    rect inter(const rect &other)
    {
        rect res = rect(max(st,other.st),min(dr,other.dr),min(sus,other.sus),max(jos,other.jos));
        return res;
    }
};

signed main()
{
    rect rects[3];
    for(int i=0;i<3;i++)
    {
        int a,b,c,d;in>>a>>b>>c>>d;
        rects[i]=rect(a,c,d,b);
    }
    out<<rects[0].area()+rects[1].area()+rects[2].area()-
         rects[0].inter(rects[1]).area()-rects[1].inter(rects[2]).area()-rects[0].inter(rects[2]).area()+
         rects[0].inter(rects[1]).inter(rects[2]).area()<<' ';
    out<<rects[0].peri()+rects[1].peri()+rects[2].peri()-
         rects[0].inter(rects[1]).peri()-rects[1].inter(rects[2]).peri()-rects[0].inter(rects[2]).peri()+
         rects[0].inter(rects[1]).inter(rects[2]).peri();
}