Pagini recente » Cod sursa (job #1948846) | Cod sursa (job #1220020) | Cod sursa (job #1215117) | Cod sursa (job #1911264) | Cod sursa (job #2784979)
#include<fstream>
using namespace std;
ifstream f("reuniune.in"); ofstream g("reuniune.out");
typedef long long ll;
struct drept {int x0,y0,x1,y1;} d[4];
ll ar(drept p)
{ return 1LL*(p.x1-p.x0)*(p.y1-p.y0);}
ll per(drept p)
{ return 2LL*(p.x1-p.x0+p.y1-p.y0);}
int vmax(int x, int y)
{ if(x<y) return y; else return x;}
int vmin(int x, int y)
{ if(x<y) return x; else return y;}
drept idr(drept a, drept b)
{ drept c;
c.x0=vmax(a.x0,b.x0);
c.y0=vmax(a.y0,b.y0);
c.x1=vmin(a.x1,b.x1);
c.y1=vmin(a.y1,b.y1);
if(c.x0>c.x1 || c.y0>c.y1) return d[0];
return c;
}
int main()
{ for(int i=1;i<=3;i++) f>>d[i].x0>>d[i].y0>>d[i].x1>>d[i].y1;
ll arie=ar(d[1])+ar(d[2])+ar(d[3])-ar(idr(d[1],d[2]))-ar(idr(d[1],d[3]))-ar(idr(d[3],d[2]))
+ar(idr(idr(d[1],d[2]),d[3]));
ll perimetru=per(d[1])+per(d[2])+per(d[3])-per(idr(d[1],d[2]))-per(idr(d[1],d[3]))-per(idr(d[3],d[2]))
+per(idr(idr(d[1],d[2]),d[3]));
g<<arie<<' '<<perimetru; g.close(); f.close(); return 0;
}