Cod sursa(job #987869)

Utilizator DorelBarbuBarbu Dorel DorelBarbu Data 21 august 2013 16:57:45
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("reuniune.in");
ofstream out("reuniune.out");

struct dreptunghi
{
    long long x0;
    long long y0;
    long long x1;
    long long y1;
};
dreptunghi d[4];

dreptunghi inter(dreptunghi a,dreptunghi b)
{
    dreptunghi i;
    i.x0=max(a.x0,b.x0);
    i.y0=max(a.y0,b.y0);
    i.x1=min(a.x1,b.x1);
    i.y1=min(a.y1,b.y1);
    if(i.x0>i.x1 || i.y0>i.y1)
    {
        i.x0=0;i.x1=0;i.y0=0;i.y1=0;
    }
    return i;
}
long long arie(dreptunghi x)
{
    return (x.x1-x.x0)*(x.y1-x.y0);
}
long long per(dreptunghi x)
{
    return 2*(x.x1-x.x0+x.y1-x.y0);
}
void citire()
{
    int i;
    for(i=1; i<=3; i++)
    in>>d[i].x0>>d[i].y0>>d[i].x1>>d[i].y1;
}

int main()
{
    citire();
    long long i,j,suprafata,perimetru;
    dreptunghi aux;

    suprafata=arie(d[1])+arie(d[2])+arie(d[3])-arie(inter(d[1],d[2]))-arie(inter(d[1],d[3]))-arie(inter(d[2],d[3]))+arie(inter(inter(d[1],d[2]),d[3]));
    perimetru=per(d[1])+per(d[2])+per(d[3])-per(inter(d[1],d[2]))-per(inter(d[1],d[3]))-per(inter(d[2],d[3]))+per(inter(inter(d[1],d[2]),d[3]));
    out<<suprafata<<' '<<perimetru;
    return 0;
}