Cod sursa(job #2289437)

Utilizator sandupetrascoPetrasco Sandu sandupetrasco Data 24 noiembrie 2018 16:37:45
Problema Reuniune Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
#define ll long long
#define PII pair < int , int >
#define MOD 1000000007  
 
using namespace std;

ll area, perim;
 
struct Rectangle {
    PII a, b;
    
    Rectangle() {
        a = {0, 0};
        b = {0, 0};
    }
};

Rectangle Intersect(Rectangle A, Rectangle B) {
    Rectangle C;

    C.a.first = max(A.a.first, B.a.first);
    C.a.second = max(A.a.second, B.a.second);
    C.b.first = min(A.b.first, B.b.first);
    C.b.second = min(A.b.second, B.b.second);

    return C;
}

ll Area(Rectangle A) {
    return abs(A.b.first - A.a.first) * abs(A.b.second - A.a.second);
}

ll Perim(Rectangle A) {
    return 2 * (abs(A.b.first - A.a.first) + abs(A.b.second - A.a.second));
}
 
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
 
    ifstream cin("reuniune.in");
    ofstream cout("reuniune.out");

    Rectangle a[4];

    for (int i = 1; i <= 3; i++) {
        cin >> a[i].a.first >> a[i].a.second;
        cin >> a[i].b.first >> a[i].b.second;

        area += Area(a[i]);
        perim += Perim(a[i]);
    }

    Rectangle A = Intersect(a[1], a[2]);
    Rectangle B = Intersect(a[2], a[3]);
    Rectangle C = Intersect(a[1], a[3]);
    Rectangle D = Intersect(A, a[3]);

    area = area - Area(A) - Area(B) - Area(C) + Area(D);
    perim = perim - Perim(A) - Perim(B) - Perim(C) + Perim(D);

    cout << area << " " << perim << "\n";
    return 0;
}