Cod sursa(job #2177016)

Utilizator Stefan_PiscuPiscu Stefan Constantin Stefan_Piscu Data 18 martie 2018 12:14:55
Problema Reuniune Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
unsigned long long a, p;
int i, j;
struct dreptunghi{ long long x, y, x1, y1;
                 }d[4], D;
int arie(dreptunghi d)
{
    if(d.x<d.x1&&d.y<d.y1) return (d.x1-d.x)*(d.y1-d.y);
    return 0;
}
int peri(dreptunghi d)
{
    if(d.x<d.x1&&d.y<d.y1) return 2*(d.x1-d.x+d.y1-d.y);
    return 0;
}
dreptunghi inter(dreptunghi d1, dreptunghi d2)
{
    dreptunghi a;
    a.x=max(d1.x, d2.x);
    a.y=max(d1.y, d2.y);
    a.x1=min(d1.x1, d2.x1);
    a.y1=min(d1.y1, d2.y1);
    return a;
}
int main()
{
    int n=3;
    for(i=0;i<n;++i) f>>d[i].x>>d[i].y>>d[i].x1>>d[i].y1;
    for(i=1;i<(1<<n);++i)
    {
        int nr=0;
        for(j=0;j<n;++j)
            if(i&(1<<j))
            {
                if(nr==0) D=d[j];
                else D=inter(D, d[j]);
                nr++;
            }
        if(nr%2) a+=arie(D), p+=peri(D);
        else a-=arie(D), p-=peri(D);
    }
    g<<a<<" "<<p<<"\n";
    return 0;
}