Cod sursa(job #2871831)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 15 martie 2022 20:13:50
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <bits/stdc++.h>
#pragma GCC optimize ("Ofast")
#define LL long long

using namespace std;

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

struct dreptunghi{
    LL i, j;
    LL ii, jj;
}a, b, c, ab, bc, ca, abc;

LL area(const dreptunghi& d){
    return (long long)(d.ii - d.i) * (d.jj - d.j);
}

LL perimeter(const dreptunghi& d){
    return (long long)2 * ((d.ii - d.i) + (d.jj - d.j));
}

dreptunghi intersect(const dreptunghi& x, const dreptunghi& y){
    dreptunghi intt = {
        max(x.i, y.i),   /// i
        max(x.j, y.j),   /// j
        min(x.ii, y.ii), /// ii
        min(x.jj, y.jj)  /// jj
    };

    if(intt.i > intt.ii || intt.j > intt.jj)
        intt = {0, 0, 0, 0};

    return intt;
}


signed main (){
    ios_base::sync_with_stdio(false);
    fin.tie(nullptr);
    fout.tie(nullptr);

    fin>>a.i>>a.j>>a.ii>>a.jj;
    fin>>b.i>>b.j>>b.ii>>b.jj;
    fin>>c.i>>c.j>>c.ii>>c.jj;

    ab =  intersect(a, b);
    bc =  intersect(b, c);
    ca =  intersect(c, a);
    abc = intersect(ab, c);
    fout<<area(a) + area(b) + area(c) - area(ab) - area(bc) - area(ca) + area(abc)<<" "<<perimeter(a) + perimeter(b) + perimeter(c) - perimeter(ab) - perimeter(bc) - perimeter(ca) + perimeter(abc);
    return 0;
}
/**
a + b + c - a*b - b*c - c*a + a*b*c
**/