Cod sursa(job #2884529)

Utilizator _andrei4567Stan Andrei _andrei4567 Data 3 aprilie 2022 21:29:34
Problema Reuniune Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.11 kb
#include <fstream>
#include <algorithm>
#define int long long

using namespace std;

ifstream cin ("reuniune.in");
ofstream cout ("reuniune.out");

struct puncte
{
    int xi, xf, yi, yf;

} a, b, c;

signed main()
{
    cin >> a.xi >> a.yi >> a.xf >> a.yf;
    cin >> b.xi >> b.yi >> b.xf >> b.yf;
    cin >> c.xi >> c.yi >> c.xf >> c.yf;
    a.xi += 1e9 + 1;
    a.yi += 1e9 + 1;
    b.xi += 1e9 + 1;
    b.xf += 1e9 + 1;
    c.xi += 1e9 + 1;
    c.xf += 1e9 + 1;
    a.xf += 1e9 + 1;
    a.yf += 1e9 + 1;
    b.yi += 1e9 + 1;
    b.yf += 1e9 + 1;
    c.yi += 1e9 + 1;
    c.yf += 1e9 + 1;
    int arieinitiala = (a.xf - a.xi) * (a.yf - a.yi) + (b.xf - b.xi) * (b.yf - b.yi) + (c.xf - c.xi) * (c.yf - c.yi);
    int perimetruinitial = (a.xf - a.xi) + (a.yf - a.yi) + (b.xf - b.xi) + (b.yf - b.yi) +(c.xf - c.xi) + (c.yf - c.yi);
    int abxi = max (max (a.xi, b.xi), 1LL * 0);
    int abxf = min (a.xf, b.xf);
    int abyi = max(max (a.yi, b.yi), 1LL * 0);
    int abyf = min (a.yf, b.yf);
    int acxi = max(max (a.xi, c.xi), 1LL * 0);
    int acxf = min (a.xf, c.xf);
    int acyi = max(max (a.yi, c.yi), 1LL * 0);
    int acyf = min (a.yf, c.yf);
    int cbxi = max( max (c.xi, b.xi),1LL * 0);
    int cbxf = min (c.xf, b.xf);
    int cbyi = max(max (c.yi, b.yi), 1LL * 0);
    int cbyf = min (c.yf, b.yf);
    int intxi, intyi, intxf, intyf;
    intxi = max (max (abxi, acxi), max(cbxi, 1LL * 0));
    intxf = min (min(abxf, acxf), cbxf);
    intyi = max (max (abyi, acyi), max(cbyi, 1LL * 0));
    intyf = min (min(abyf, acyf), cbyf);
    int ar1, ar2, ar3, arc;
    ar1 = (abxf - abxi) * (abyf - abyi);
    ar2 = (acxf - acxi) * (acyf - acyi);
    ar3 = (cbxf - cbxi) * (cbyf - cbyi);
    arc = (intxf - intxi) * (intyf - intyi);
    cout << arieinitiala - ar1 - ar2 - ar3 + arc << ' ';
    int per1, per2, per3, perc;
    per1 = (abxf - abxi) + (abyf - abyi);
    per2 = (acxf - acxi) + (acyf - acyi);
    per3 = (cbxf - cbxi) + (cbyf - cbyi);
    perc = (intxf - intxi) + (intyf - intyi);
    cout << 2 * (perimetruinitial - per1 - per2 - per3 + perc) << '\n';


    return 0;
}