Pagini recente » Cod sursa (job #2004870) | Cod sursa (job #554277) | Cod sursa (job #2843389) | Cod sursa (job #1835646) | Cod sursa (job #1447946)
#include <fstream>
#include <iostream>
using namespace std;
struct dreptunghi{
long long xm, xM, ym, yM; };
constexpr long long arie(const dreptunghi& d){
return (d.xm < d.xM && d.ym < d.yM) ? (d.xM-d.xm)*(d.yM-d.ym) : 0; }
constexpr long long perimetru(const dreptunghi& d){
return (d.xm <= d.xM && d.ym <= d.yM) ? 2*(d.xM-d.xm + d.yM-d.ym) : 0; }
dreptunghi intersect(const dreptunghi& a, const dreptunghi& b){
return dreptunghi{max(a.xm, b.xm), min(a.xM, b.xM), max(a.ym, b.ym), min(a.yM, b.yM)}; }
ifstream& operator>>(ifstream& f, dreptunghi& dr){
f >> dr.xm >> dr.ym >> dr.xM >> dr.yM;
return f; }
int main(){
ifstream f("reuniune.in");
dreptunghi a, b, c;
f >> a >> b >> c;
dreptunghi ab = intersect(a, b),
bc = intersect(b, c),
ac = intersect(a, c),
abc = intersect(ab, c);
ofstream g("reuniune.out");
g << arie(a) + arie(b) + arie(c) - arie(ab) - arie(bc) - arie(ac) + arie(abc) << ' ' <<
perimetru(a) + perimetru(b) + perimetru(c) - perimetru(ab) - perimetru(bc) - perimetru(ac)
+ perimetru(abc);
return 0; }