Pagini recente » Cod sursa (job #2392693) | Cod sursa (job #1522891) | Cod sursa (job #464864) | Cod sursa (job #2058949) | Cod sursa (job #603932)
Cod sursa(job #603932)
#include <stdio.h>
#include <math.h>
struct dr
{
int sx, sy, jx, jy;
};
int min(int a, int b)
{
if(a<b)
{
return a;
}
return b;
}
int max(int a, int b)
{
if(a>b)
{
return a;
}
return b;
}
long long abs(long long a)
{
if(a<0)
{
return -a;
}
return a;
}
dr inter(dr d1, dr d2)
{
dr rez;
if((d2.sx >= d1.jx || d2.sy <= d1.jy) || d2.jx <= d1.sx || d2.jy >= d1.sy)
{
rez.sx = rez.sy = rez.jx = rez.jy = 0;
return rez;
}
rez.sx = max(d1.sx, d2.sx);
rez.sy = min(d1.sy, d2.sy);
rez.jx = min(d1.jx, d2.jx);
rez.jy = max(d1.jy, d2.jy);
return rez;
}
long long aria(dr d)
{
long long a;
a = abs((long long)(d.sx - d.jx) * (d.sy - d.jy));
return a;
}
long long perim(dr d)
{
long long p;
p = 2LL * ((long long)(d.sy - d.jy) + (d.jx - d.sx));
return p;
}
int main()
{
dr d[3];
int i;
long long p, a;
freopen("reuniune.in", "r", stdin);
freopen("reuniune.out", "w", stdout);
for(i=0;i<3;++i)
{
scanf("%d %d %d %d", &d[i].sx, &d[i].jy, &d[i].jx, &d[i].sy);
}
a = aria(d[0])
+ aria(d[1])
+ aria(d[2])
- aria(inter(d[0], d[1]))
- aria(inter(d[1], d[2]))
- aria(inter(d[2], d[0]))
+ aria(inter(d[0],inter(d[1], d[2])));
p = perim(d[0])
+ perim(d[1])
+ perim(d[2])
- perim(inter(d[0], d[1]))
- perim(inter(d[1], d[2]))
- perim(inter(d[2], d[0]))
+ perim(inter(d[0],inter(d[1], d[2])));
printf("%lld %lld", a, p);
return 0;
}