Pagini recente » Cod sursa (job #2713078) | Cod sursa (job #3181104) | Cod sursa (job #3273144) | Cod sursa (job #1122266) | Cod sursa (job #2247418)
#include <iostream>
#include <fstream>
#include <algorithm>
#define ll long long
using namespace std;
struct trt
{
int x0,y0,x1,y1;
} tr[4];
int comp(trt a,trt b)
{
if( a.x0!= b.x0) return (a.x0<b.x0);
if( a.y0!= b.y0) return (a.y0<b.y0);
if( a.x1!= b.x1) return (a.x1<b.x1);
if( a.y1!= b.y1) return (a.y1<b.y1);
return 0;
}
trt inter2( trt a,trt b)
{
trt aux;
aux.x0= max(a.x0,b.x0);
aux.x1= min(a.x1,b.x1);
aux.y0= max(a.y0,b.y0);
aux.y1= min(a.y1,b.y1);
return aux;
}
int main()
{
ifstream t1("reuniune.in");
ofstream t2("reuniune.out");
int i;
long long arie=0,perimetru=0;
for(i=1;i<=3;i++)
{
t1>>tr[i].x0>>tr[i].y0>>tr[i].x1>>tr[i].y1;
arie+=1ll*(tr[i].x1-tr[i].x0)*(tr[i].y1-tr[i].y0);
perimetru+=2*(tr[i].x1-tr[i].x0 + tr[i].y1-tr[i].y0);
}
tr[0]=inter2(tr[1],tr[2]);
//cout<<tr[0].x0<<' '<<tr[0].y0<<' '<<tr[0].x1<<' '<<tr[0].y1<<'\n';
if(tr[0].x0<=tr[0].x1 && tr[0].y0<=tr[0].y1)
{
arie-=1ll*(tr[0].x1-tr[0].x0)*(tr[0].y1-tr[0].y0);
perimetru-=2*(tr[0].x1-tr[0].x0 + tr[0].y1-tr[0].y0);
}
tr[0]=inter2(tr[1],tr[3]);
if(tr[0].x0<=tr[0].x1 && tr[0].y0<=tr[0].y1)
{
arie-=1ll*(tr[0].x1-tr[0].x0)*(tr[0].y1-tr[0].y0);
perimetru-=2*(tr[0].x1-tr[0].x0 + tr[0].y1-tr[0].y0);
}
tr[0]=inter2(tr[2],tr[3]);
if(tr[0].x0<=tr[0].x1 && tr[0].y0<=tr[0].y1)
{
arie-=1ll*(tr[0].x1-tr[0].x0)*(tr[0].y1-tr[0].y0);
perimetru-=2*(tr[0].x1-tr[0].x0 + tr[0].y1-tr[0].y0);
}
tr[0]=inter2(tr[1],tr[2]);
tr[0]=inter2(tr[0],tr[3]);
if(tr[0].x0<=tr[0].x1 && tr[0].y0<=tr[0].y1)
{
arie+=1ll*(tr[0].x1-tr[0].x0)*(tr[0].y1-tr[0].y0);
perimetru+=2*(tr[0].x1-tr[0].x0 + tr[0].y1-tr[0].y0);
}
t2<<arie<<' '<<perimetru<<'\n';
}