Pagini recente » Cod sursa (job #3147713) | Cod sursa (job #163292) | Cod sursa (job #1416297) | Cod sursa (job #1891411) | Cod sursa (job #1988249)
#include <cstdio>
using namespace std;
FILE *in,*out;
struct Dreptunghi
{
int x;
int y;
int z;
int t;
} d[5],v[6];
int max(int a,int b)
{
if(a > b)
return a;
return b;
}
int min(int a,int b)
{
if(a < b)
return a;
return b;
}
Dreptunghi intersectie(Dreptunghi a,Dreptunghi b)
{
Dreptunghi c;
c.x = max(a.x,b.x);
c.y = max(a.y,b.y);
c.z = min(a.z,b.z);
c.t = min(a.t,b.t);
if(c.x > c.z || c.y > c.t)
{
c.x = 0;
c.y = 0;
c.z = 0;
c.t = 0;
}
return c;
}
long long calcarie(Dreptunghi a)
{
return 1LL * (a.z - a.x) * (a.t - a.y);
}
long long calcperimetru(Dreptunghi a)
{
return (1LL * (a.z - a.x) + (a.t - a.y))*2;
}
int main()
{
in = fopen("reuniune.in","r");
out = fopen("reuniune.out","w");
long long arie =0,nr = 0,perimetru = 0;
for(int i =1; i <= 3; i ++)
{
fscanf(in,"%d %d %d %d",&d[i].x,&d[i].y,&d[i].z,&d[i].t);
arie += calcarie(d[i]);
perimetru += calcperimetru(d[i]);
for(int j = 1; j < i; j ++)
{
nr ++;
v[nr] = intersectie(d[i],d[j]);
perimetru -= calcperimetru(v[nr]);
arie -= calcarie(v[nr]);
}
}
arie += calcarie(intersectie(d[3],v[1]));
perimetru += calcperimetru(intersectie(d[3],v[1]));
fprintf(out,"%lld %lld",arie,perimetru);
return 0;
}