Pagini recente » Cod sursa (job #579974) | Cod sursa (job #234310) | Cod sursa (job #310077) | Cod sursa (job #2378971) | Cod sursa (job #2156520)
#include <fstream>
using namespace std;
ifstream f("reuniune.in");
ofstream g("reuniune.out");
int i, a, p, j;
struct dreptunghi{ int 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++;
}
//g<<D.x<<" "<<D.y<<" "<<D.x1<<" "<<D.y1<<"\n";
if(nr%2) a+=arie(D), p+=peri(D);
else a-=arie(D), p-=peri(D);
}
g<<a<<" "<<p<<"\n";
return 0;
}