Cod sursa(job #2477241)

Utilizator ArkhamKnightyMarco Vraja ArkhamKnighty Data 19 octombrie 2019 21:11:15
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>

using namespace std;

struct punct
{
    long long x, y, z, t;
};

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

punct a, b, c;

inline punct intersect(punct a, punct b)
{
    punct r;
    r.x = max(a.x, b.x);
    r.y = max(a.y, b.y);
    r.z = min(a.z, b.z);
    r.t = min(a.t, b.t);

    if(r.x > r.z || r.y > r.t)
        r.x = r.y = r.z = r.t = 0;

    return r;

    return r;

}

inline long long arie(punct a)
{
    return (a.z - a.x) * (a.t - a.y);
}

inline long long perimetru(punct a)
{
    return (a.z - a.x + a.t - a.y) << 1;
}

void citire()
{
    cin >> a.x >> a.y >> a.z >> a.t >>
    b.x >> b.y >> b.z >> b.t >> c.x >> c.y >> c.z >> c.t;
}

void print()
{
    cout << arie(a) + arie(b) + arie(c) - arie(intersect(a,b))
    - arie(intersect(b,c)) - arie(intersect(a,c)) +
    arie(intersect( intersect(a, c), b)) << ' ';

    cout << perimetru(a) + perimetru(b) + perimetru(c)
    - perimetru(intersect(a,b))- perimetru(intersect(b,c))
    - perimetru(intersect(a,c)) + perimetru(intersect( intersect(a, c), b));
}
int main()
{
    citire();
    print();
    return 0;
}