Cod sursa(job #2172647)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 15 martie 2018 17:20:33
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.91 kb
#include <fstream>
#include <cmath>
#define LL long long

using namespace std;

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

struct rectangle {
    LL x, y, x2, y2;
};
rectangle a, b, c;
LL sum;
int nr, i;

LL area(rectangle b) {
    return (b.x2-b.x)*(b.y2-b.y);
}

LL peri(rectangle b) {
    return 2*((b.x2-b.x)+(b.y2-b.y));
}

LL Ajoin(rectangle a, rectangle b) {
    if ( min(a.y2, b.y2) <= max(a.y,b.y) ||
         min(a.x2, b.x2) <= max(a.x,b.x) )
            return 0;
    LL x, y, x2, y2;
    y2 = min(a.y2, b.y2);
     y = max(a.y , b.y );
    x2 = min(a.x2, b.x2);
     x = max(a.x , b.x );
    return (x2-x)*(y2-y);
}

LL Ajoin3(rectangle a, rectangle b, rectangle c) {
    if (Ajoin(a,b)==0||Ajoin(b,c)==0||Ajoin(c,a)==0) return 0;

    LL x, y, x2, y2;
    y2 = min(c.y2, min(a.y2, b.y2));
     y = max(c.y,  max(a.y , b.y ));
    x2 = min(c.x2, min(a.x2, b.x2));
     x = max(c.x,  max(a.x , b.x ));
    return (x2-x)*(y2-y);
}

LL Pjoin(rectangle a, rectangle b) {
    if ( min(a.y2, b.y2) <= max(a.y,b.y) ||
         min(a.x2, b.x2) <= max(a.x,b.x) )
            return 0;
    LL x, y, x2, y2;
    y2 = min(a.y2, b.y2);
     y = max(a.y , b.y );
    x2 = min(a.x2, b.x2);
     x = max(a.x , b.x );
    return 2*((x2-x)+(y2-y));
}

LL Pjoin3(rectangle a, rectangle b, rectangle c) {
    if (Pjoin(a,b)==0||Pjoin(b,c)==0||Pjoin(c,a)==0) return 0;

    LL x, y, x2, y2;
    y2 = min(c.y2, min(a.y2, b.y2));
     y = max(c.y,  max(a.y , b.y ));
    x2 = min(c.x2, min(a.x2, b.x2));
     x = max(c.x,  max(a.x , b.x ));
    return 2*((x2-x)*(y2-y));
}

void read(rectangle &a) {
    f >> a.x >> a.y >> a.x2 >> a.y2;
}

int main() {
    read(a); read(b); read(c);
    g << (area(a)+area(b)+area(c)) - (Ajoin(a,b)+Ajoin(a,c)+Ajoin(b,c)) + Ajoin3(a,b,c) << ' ';
    g << (peri(a)+peri(b)+peri(c)) - (Pjoin(a,b)+Pjoin(a,c)+Pjoin(b,c)) + Pjoin3(a,b,c);
}