Pagini recente » Cod sursa (job #361043) | Cod sursa (job #1026475) | Cod sursa (job #95942) | Borderou de evaluare (job #3332208) | Cod sursa (job #3309110)
#include <bits/stdc++.h>
#define f first
#define s second
#define ll long long
using namespace std;
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
struct Point
{
ll i, j;
Point(){}
Point(ll i, ll j)
{
this-> i = i;
this-> j = j;
}
};
Point min(Point a, Point b)
{
return {min(a.i, b.i), min(a.j, b.j)};
}
Point max(Point a, Point b)
{
return {max(a.i, b.i), max(a.j, b.j)};
}
struct Figure
{
Point l, r;
Figure(){}
Figure(Point l, Point r)
{
this-> l = l;
this-> r = r;
}
ll getA()
{
return max(0ll, r.i - l.i) * max(0ll, r.j - l.j);
}
ll getP()
{
if(l.i > r.i || l.j > r.j)
return 0;
return 2 * (r.i - l.i + r.j - l.j);
}
};
Figure a, b, c;
Figure ab, ac, bc;
Figure abc;
void read()
{
Point auxl, auxr;
fin >> auxl.j >> auxl.i >> auxr.j >> auxr.i;
a = Figure(auxl, auxr);
fin >> auxl.j >> auxl.i >> auxr.j >> auxr.i;
b = Figure(auxl, auxr);
fin >> auxl.j >> auxl.i >> auxr.j >> auxr.i;
c = Figure(auxl, auxr);
}
void processRectangles()
{
Point auxl, auxr;
auxl = max(a.l, b.l);
auxr = min(a.r, b.r);
ab = Figure(auxl, auxr);
auxl = max(a.l, c.l);
auxr = min(a.r, c.r);
ac = Figure(auxl, auxr);
auxl = max(b.l, c.l);
auxr = min(b.r, c.r);
bc = Figure(auxl, auxr);
auxl = max(max(a.l, b.l), c.l);
auxr = min(min(a.r, b.r), c.r);
abc = Figure(auxl, auxr);
}
void solve()
{
ll bigA = a.getA() + b.getA() + c.getA();
ll medA = ab.getA() + bc.getA() + ac.getA();
ll smallA = abc.getA();
fout << bigA - medA + smallA << '\n';
ll bigP = a.getP() + b.getP() + c.getP();
ll medP = ab.getP() + bc.getP() + ac.getP();
ll smallP = abc.getP();
fout << bigP - medP + smallP << '\n';
}
int main()
{
read();
cout << a.getA() << ' ' << b.getA() << ' ' << c.getA() << '\n';
processRectangles();
cout << ab.getA() << ' ' << bc.getA() << ' ' << ac.getA() << ' ' << abc.getA() << '\n';
solve();
return 0;
}