Cod sursa(job #3236263)

Utilizator Andrei2000Andrei Mihailescu Andrei2000 Data 26 iunie 2024 18:40:33
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("reuniune.in");
ofstream fout("reuniune.out");

const long long int MAX=2000000000;

struct rect{
    long long int x0,y0,x1,y1;
};

long long int arie(rect r){
    if(r.x1<r.x0 || r.y1<r.y0)return 0;
    return abs(r.x0-r.x1)*abs(r.y0-r.y1);
}

long long int perimetru(rect r){
    if(r.x1<r.x0 || r.y1<r.y0)return 0;
    return 2*(abs(r.x0-r.x1)+abs(r.y0-r.y1));
}

rect inter(vector<rect> v){
    long long int x0=-MAX,y0=-MAX,x1=MAX,y1=MAX;

    for(auto r: v){
        if(r.x0>x0)x0=r.x0;
        if(r.y0>y0)y0=r.y0;
        if(r.x1<x1)x1=r.x1;
        if(r.y1<y1)y1=r.y1;
    }

    return {x0,y0,x1,y1};
}

int main()
{
    rect r1,r2,r3;
    long long int a,b,c,d;
    fin>>a>>b>>c>>d;
    r1={a,b,c,d};
    fin>>a>>b>>c>>d;
    r2={a,b,c,d};
    fin>>a>>b>>c>>d;
    r3={a,b,c,d};
    fout<<arie(r1)+arie(r2)+arie(r3)-arie(inter({r1,r2}))-arie(inter({r1,r3}))-arie(inter({r2,r3}))+arie(inter({r1,r2,r3}))<<" ";
    fout<<perimetru(r1)+perimetru(r2)+perimetru(r3)-perimetru(inter({r1,r2}))-perimetru(inter({r1,r3}))-perimetru(inter({r2,r3}))+perimetru(inter({r1,r2,r3}))<<endl;
    return 0;
}