Cod sursa(job #2533958)

Utilizator razviii237Uzum Razvan razviii237 Data 29 ianuarie 2020 21:37:49
Problema Reuniune Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("reuniune.in");
ofstream g("reuniune.out");

typedef long long lint;

struct poly {
    lint a, b, c, d;
};
poly v[10];

int ab(int x) { return (x < 0 ? -x : x); }
lint ab(lint x) { return (x < 0 ? -x : x); }

lint area(poly a) {
    return ab((a.a - a.c) * (a.b - a.d));
}
lint per(poly a) {
    return 2 * (ab(a.a - a.c) + ab(a.b - a.d));
}

poly mix(poly a, poly b) {
    poly c = {0, 0, 0, 0};
    c.a = max(a.a, b.a);
    c.b = max(a.b, b.b);
    c.c = min(a.c, b.c);
    c.d = min(a.d, b.d);
    if(c.a > c.c || c.b > c.d) { return {0, 0, 0, 0}; }
    return c;
}

int main()
{
    for(int i = 1; i <= 3; i ++) {
        f >> v[i].a >> v[i].b >> v[i].c >> v[i].d;
    }

    g << area(v[1]) + area(v[2]) + area(v[3])
        - area(mix(v[1], v[2]))
        - area(mix(v[2], v[3]))
        - area(mix(v[3], v[1]))
        + area(mix(mix(v[1], v[2]), v[3])) << ' ';

    g << per(v[1]) + per(v[2]) + per(v[3])
        - per(mix(v[1], v[2]))
        - per(mix(v[2], v[3]))
        - per(mix(v[3], v[1]))
        + per(mix(mix(v[1], v[2]), v[3])) << ' ';


    f.close(); g.close();
    return 0;
}