Cod sursa(job #2230977)

Utilizator Constantin.Dragancea Constantin Constantin. Data 12 august 2018 16:08:58
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

struct lel{
    int a, b, c, d;
} dp[10], ska;
ll area, perim;

int main(){
    ifstream cin ("reuniune.in");
    ofstream cout ("reuniune.out");
    for (int i=1; i<=3; i++){
        cin >> dp[i].a >> dp[i].b >> dp[i].c >> dp[i].d;
        area += (dp[i].c - dp[i].a)*(dp[i].d - dp[i].b);
        perim += 2*(dp[i].c - dp[i].a + dp[i].d - dp[i].b);
    }
    ska = dp[1];
    for (int i=1; i<=3; i++){
        ska.a = max(ska.a, dp[i].a); ska.b = max(ska.b, dp[i].b);
        ska.c = min(ska.c, dp[i].c); ska.d = min(ska.d, dp[i].d);
        for (int j=i+1; j<=3; j++){
            ll x = max(dp[i].a, dp[j].a), y = max(dp[i].b, dp[j].b);
            ll z = min(dp[i].c, dp[j].c), t = min(dp[i].d, dp[j].d);
            if ((z - x)*(t - y) < 0) continue;
            area -= (z-x)*(t-y);
            perim -= 2*(z-x + t-y);
        }
    }
    if ((ska.c - ska.a)*(ska.d - ska.b) < 0) return cout << area << " " << perim, 0;
    area += (ska.c - ska.a)*(ska.d - ska.b);
    perim += 2*(ska.c - ska.a + ska.d - ska.b);
    return cout << area << " " << perim, 0;
}