Pagini recente » Cod sursa (job #1517739) | Cod sursa (job #2632534) | Cod sursa (job #2464701) | Cod sursa (job #1901058) | Cod sursa (job #2939433)
#include <fstream>
#include <algorithm>
using namespace std;
struct segment{
int st,dr;
};
struct dreptunghi{
segment x,y;
}v[10];
int gasit=0;
segment intersectie(segment a,segment b){
segment rez;
rez.st=max(a.st,b.st);
rez.dr=min(a.dr,b.dr);
if(rez.st<=rez.dr){gasit++;}
return rez;
}
pair<long long,long long> calc(dreptunghi a){
pair<long long,long long>val;
val.first=1LL*(a.x.dr-a.x.st)*(a.y.dr-a.y.st);
val.second=2*(a.x.dr-a.x.st)+2*(a.y.dr-a.y.st);
return val;
}
int main()
{
ifstream fin("reuniune.in");
ofstream fout("reuniune.out");
segment a,b;int x1,y1,x2,y2;
dreptunghi d;
for(int i=1;i<=3;i++){
fin>>x1>>y1>>x2>>y2;
a.st=x1;a.dr=x2;
b.st=y1;b.dr=y2;
v[i].x=a;v[i].y=b;
}
long long arie=0,perimetru=0;
pair<long long,long long>nr;
for(int i=1;i<=3;i++){
nr=calc(v[i]);
arie+=nr.first;
perimetru+=nr.second;
}
for(int i=1;i<=3;i++){
for(int j=i+1;j<=3;j++){
gasit=0;
a=intersectie(v[i].x,v[j].x);
b=intersectie(v[i].y,v[j].y);
if(gasit==2){
d.x=a;d.y=b;
nr=calc(d);
arie-=nr.first;
perimetru-=nr.second;
}
}
}
gasit=0;
a=intersectie(v[1].x,v[2].x);
b=intersectie(v[1].y,v[2].y);
if(gasit==2){
gasit=0;
a=intersectie(a,v[3].x);
b=intersectie(b,v[3].y);
if(gasit==2){
d.x=a;d.y=b;
nr=calc(d);
arie+=nr.first;
perimetru+=nr.second;
}
}
fout<<arie<<" "<<perimetru<<'\n';
return 0;
}