Cod sursa(job #3279238)

Utilizator FlaviuuuFlaviu Flaviuuu Data 22 februarie 2025 11:20:25
Problema Reuniune Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>
#include <algorithm>
#include <vector>
#include <array>
using namespace std;
#define ll long long
array<ll, 4> inter(array<ll, 4> a, array<ll, 4> b)
{
    return {max(a[0], b[0]), max(a[1], b[1]), min(a[2], b[2]), min(a[3], b[3])};
}
ll rec(array<ll, 4> a)
{
    return abs(a[2] - a[0]) * abs(a[3] - a[1]);
}
ll per(array<ll, 4> a)
{
    return abs(a[2] - a[0]) + abs(a[3] - a[1]);
}
int main()
{
    ifstream fin("reuniune.in");
    ofstream fout("reuniune.out");
    #ifdef FLAVIUUU
    #define fin cin
    #define fout cout
    #endif // FLAVIUUU
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    vector<array<ll, 4>> a(3);
    for(int i = 0; i < 3; i++)
        fin>>a[i][0]>>a[i][1]>>a[i][2]>>a[i][3];
    ll area = rec(a[0]) + rec(a[1]) + rec(a[2]) - rec(inter(a[0], a[1])) - rec(inter(a[1], a[2])) - rec(inter(a[0], a[2])) + rec(inter(inter(a[0], a[1]), a[2]));
    ll perimetru = per(a[0]) + per(a[1]) + per(a[2]) - per(inter(a[0], a[1])) - per(inter(a[1], a[2])) - per(inter(a[0], a[2])) + per(inter(inter(a[0], a[1]), a[2]));
    fout<<area<<" "<<2 * perimetru;
    return 0;
}