Cod sursa(job #1230656)

Utilizator tudormaximTudor Maxim tudormaxim Data 18 septembrie 2014 20:54:30
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
struct DR{long long x1, y1, x2, y2;} a, b, c;
long long A(DR d){
    return ((d.x2-d.x1)*(d.y2-d.y1));
}
long long P(DR d){
    return (2*((d.x2-d.x1)+(d.y2-d.y1)));
}

DR inside(DR d1, DR d2)
{
    DR d;
    d.x1=max(d1.x1, d2.x1);
    d.y1=max(d1.y1, d2.y1);
    d.x2=min(d1.x2, d2.x2);
    d.y2=min(d1.y2, d2.y2);
    if(d.x1>d.x2 || d.y1>d.y2)
        d.x1=d.x2=d.y1=d.y2=0;
    return d;
}

int main()
{
	freopen("reuniune.in", "r", stdin);
	freopen("reuniune.out", "w", stdout);
    cin>>a.x1>>a.y1>>a.x2>>a.y2;
    cin>>b.x1>>b.y1>>b.x2>>b.y2;
    cin>>c.x1>>c.y1>>c.x2>>c.y2;
    cout<<A(a)+A(b)+A(c)-A(inside(a, b))-A(inside(a, c))-A(inside(b, c))+A(inside(a,(inside(b, c))))<<" ";
    cout<<P(a)+P(b)+P(c)-P(inside(a, b))-P(inside(a, c))-P(inside(b, c))+P(inside(a, (inside(b, c))));
    fclose(stdin);
    fclose(stdout);
    return 0;
}