Pagini recente » Cod sursa (job #2829368) | Cod sursa (job #1374776) | Cod sursa (job #3191676) | Cod sursa (job #853117) | Cod sursa (job #1708067)
#include <iostream>
#include<fstream>
#include<algorithm>
using namespace std;
long long i,P,S,k,j,l1,l2,poz1,nr,poz,s1,s2,s3,s4,d1,d2,a,b,c,d;
bool w[4];
struct dr
{
int x,y,a,b;
}v[4];
/*struct coord
{
int val;
int poz;
}x[7],y[7];*/
int x1[4],x2[4],y1[4],y2[4];
bool compare(int a,int b)
{
return(a<b);
}
int maxim(int a,int b)
{
if(a>b)return a;
return b;
}
int minim(int a,int b)
{
if(a<b)return a;
return b;
}
int modul(int a)
{
if(a>0)return a;
return (0-a);
}
int main()
{
ifstream f("reuniune.in");
for(i=1;i<4;++i)f>>v[i].x>>v[i].y>>v[i].a>>v[i].b;
f.close();nr=0;
while(w[0]<1)
{
//for(i=0;i<4;++i)cout<<w[i];cout<<'\n';
poz=3;while(w[poz]>0){w[poz]=0;--poz;--nr;}
++nr;
if(w[0]<1)
{w[poz]=1;
if(nr<2)
{
l1=v[poz].a-v[poz].x;
l2=v[poz].b-v[poz].y;d1=l1*l2;d2=2*(l1+l2);
S+=modul(d1);
P+=modul(d2);
//cout<<"arie si perimetru "<<S<<" "<<P<<'\n';
}
else
{
if(nr<3)
{
poz1=poz-1;while(w[poz1]<1)--poz1;
//cout<<poz1<<" "<<poz<<'\n';
a=maxim(v[poz].x,v[poz1].x);
b=maxim(v[poz].y,v[poz1].y);
c=minim(v[poz].a,v[poz1].a);
d=minim(v[poz].b,v[poz1].b);
if(d>=b&&c>=a)
{
//cout<<poz<<" "<<poz1<<'\n';
l1=c-a;//cout<<x[3].val<<" "<<x[2].val<<'\n';
l2=d-b;//cout<<y[3].val<<" "<<y[2].val<<'\n';
d1=l1*l2;d2=2*(l1+l2);
S=S-modul(d1);
P=P-modul(d2);
//cout<<"aria este "<<S<<" si perimetrul este "<<P<<'\n';
//cout<<'\n';
}
//cout<<S<<" "<<P<<'\n';
}
else
{
a=v[1].x;b=v[1].y;
c=v[1].a;d=v[1].b;
for(i=2;i<4;++i)
{
a=maxim(a,v[i].x);//x1[i].poz=i;
c=minim(c,v[i].a);//x2[i].poz=i;
b=maxim(b,v[i].y);//y1[i].poz=i;
d=minim(d,v[i].b);//y2[i].poz=i;
}
if(d>=b&&c>=a)
{
l1=c-a;
l2=d-b;
S+=modul(l1*l2);
P+=2*modul(l1+l2);
}
//cout<<S<<" "<<P<<'\n';
}
}
}
}
ofstream g("reuniune.out");
g<<S<<" "<<P;
g.close();
return 0;
}