Cod sursa(job #914378)

Utilizator anagabrielaBarbieru Ana-Gabriela anagabriela Data 14 martie 2013 08:23:42
Problema Reuniune Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
struct dr{long long x0,y0,x1,y1;} d[4];
long long S,P;
long long arie(dr ok){return   (ok.x1-ok.x0) * (ok.y1-ok.y0);}
long long perimetru(dr ok){return 2*(ok.x1-ok.x0)+2*(ok.y1-ok.y0);}
dr ins(dr a, dr b){
    dr s;
    s.x0=max(a.x0,b.x0);
    s.y0=max(a.y0,b.y0);
    s.x1=min(a.x1,b.x1);
    s.y1=min(a.y1,b.y1);
    if (s.x0 > s.x1 ||s.y0 > s.y1)
        return (dr){0,0,0,0};
    return s;
}
int main()
{
    for(int i=1;i<=3;++i) 
		f>>d[i].x0>>d[i].y0>>d[i].x1>>d[i].y1;
    S= arie(d[1])+arie(d[2])+arie(d[3])- arie(ins(d[1],d[2]))-arie(ins(d[1],d[3]))-arie(ins(d[2],d[3]))+ arie(ins(ins(d[1],d[2]),d[3]));
    P= perimetru(d[1])+perimetru(d[2])+perimetru(d[3])- perimetru(ins(d[1],d[2]))-perimetru(ins(d[1],d[3]))-perimetru(ins(d[2],d[3]))+ perimetru(ins(ins(d[1],d[2]),d[3]));
    g<<S<<' '<<P<<'\n';
    g.close(); return 0;
}