Cod sursa(job #1064064)

Utilizator andreiiiiPopa Andrei andreiiii Data 21 decembrie 2013 13:38:10
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <algorithm>
#include <fstream>

using namespace std;

ifstream fin("reuniune.in");
ofstream fout("reuniune.out");

struct drpt
{
    int x1, x2, y1, y2;
};

drpt nul;

drpt inter(drpt a, drpt b)
{
    drpt aux;
    aux.x1=max(a.x1, b.x1);
    aux.x2=min(a.x2, b.x2);
    aux.y1=max(a.y1, b.y1);
    aux.y2=min(a.y2, b.y2);
    if(aux.x2<aux.x1||aux.y2<aux.y1) aux=nul;
    return aux;
}

long long arie(drpt a)
{
    return (long long)(a.x2-a.x1)*(a.y2-a.y1);
}

long long perimetru(drpt a)
{
    return (long long)(1LL*a.x2-a.x1+a.y2-a.y1)*2;
}

int main()
{
    drpt a, b, c;
    long long ar, per;
    fin>>a.x1>>a.y1>>a.x2>>a.y2>>b.x1>>b.y1>>b.x2>>b.y2>>c.x1>>c.y1>>c.x2>>c.y2;
    ar=arie(a)+arie(b)+arie(c)-arie(inter(a, b))-arie(inter(b, c))-arie(inter(c, a))+arie(inter(a, inter(b, c)));
    per=perimetru(a)+perimetru(b)+perimetru(c)-perimetru(inter(a, b))-perimetru(inter(b, c))-perimetru(inter(c, a))+perimetru(inter(a, inter(b, c)));
    fout<<ar<<" "<<per;
}