Cod sursa(job #919404)

Utilizator antonioteoZait Teodor Antonio antonioteo Data 19 martie 2013 17:12:22
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#define maxim(a, b) ((a < b) ? b : a)
#define minim(a, b) ((a < b) ? a : b)
using namespace std;
const char iname[] = "reuniune.in";
const char oname[] = "reuniune.out";
ifstream fin(iname);
ofstream fout(oname);
struct drept{long long x, y, z, t;};
inline drept sec(drept a, drept b)
{
    drept r;
    r.x = maxim(a.x,b.x);
    r.y = maxim(a.y,b.y);
    r.z = minim(a.z,b.z);
    r.t = minim(a.t,b.t);
    if (r.x > r.z || r.y > r.t)
        r.x = r.y = r.z = r.t = 0;
    return r;
}
inline long long s(drept a)
{
    return (a.z - a.x) * (a.t - a.y);
}
inline long long p(drept a)
{
    return a.z - a.x + a.t - a.y << 1;
}
int main()
{
    drept a,b,c;
    fin >> a.x >> a.y >> a.z >> a.t;
    fin >> b.x >> b.y >> b.z >> b.t;
    fin >> c.x >> c.y >> c.z >> c.t;
    fout << s(a) + s(b) + s(c) - s(sec(a,b)) - s(sec(c,b)) - s(sec(a,c)) + s(sec(sec(a,b),c)) << " ";
    fout << p(a) + p(b) + p(c) - p(sec(a,b)) - p(sec(c,b)) - p(sec(a,c)) + p(sec(sec(a,b),c)) << "\n";
    return 0;
}